1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  *	fakensl.c
24  *
25  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
26  * Use is subject to license terms.
27  */
28 
29 #include <rpc/rpc.h>
30 #include <rpc/key_prot.h>
31 
32 #ifndef HEX_KEY_BYTES
33 #define	HEX_KEY_BYTES HEXKEYBYTES
34 #endif
35 
36 extern int key_encryptsession_pk(const char *, netobj *, des_block *);
37 extern int key_decryptsession_pk(const char *, netobj *, des_block *);
38 
39 /*ARGSUSED*/
40 int
__getpublickey_cached_g(const char remotename[],int keylen,int algtype,char * pkey,size_t pkeylen,int * cached)41 __getpublickey_cached_g(const char remotename[], int keylen,
42     int algtype, char *pkey, size_t pkeylen, int *cached)
43 {
44 	return (getpublickey(remotename, pkey));
45 }
46 
47 #pragma weak getpublickey_g
48 /*ARGSUSED*/
49 int
getpublickey_g(const char remotename[],int keylen,int algtype,char * pkey,size_t pkeylen)50 getpublickey_g(const char remotename[], int keylen,
51     int algtype, char *pkey, size_t pkeylen)
52 {
53 	return (getpublickey(remotename, pkey));
54 }
55 
56 #pragma weak key_encryptsession_pk_g
57 /*ARGSUSED*/
58 int
key_encryptsession_pk_g(const char * remotename,const char * pk,int keylen,int algtype,des_block deskeys[],int no_keys)59 key_encryptsession_pk_g(const char *remotename, const char *pk, int keylen,
60     int algtype, des_block deskeys[], int no_keys)
61 {
62 	int i;
63 	netobj npk;
64 
65 	npk.n_len = HEX_KEY_BYTES;
66 	npk.n_bytes = (char *)pk;
67 
68 	for (i = 0; i < no_keys; i++) {
69 		if (key_encryptsession_pk(remotename, &npk, &deskeys[i]))
70 			return (-1);
71 	}
72 	return (0);
73 }
74 
75 #pragma weak key_decryptsession_pk_g
76 /*ARGSUSED*/
77 int
key_decryptsession_pk_g(const char * remotename,const char * pk,int keylen,int algtype,des_block deskeys[],int no_keys)78 key_decryptsession_pk_g(const char *remotename, const char *pk, int keylen,
79     int algtype, des_block deskeys[], int no_keys)
80 {
81 	int i;
82 	netobj npk;
83 
84 	npk.n_len = HEX_KEY_BYTES;
85 	npk.n_bytes = (char *)pk;
86 
87 	for (i = 0; i < no_keys; i++) {
88 		if (key_decryptsession_pk(remotename, &npk, &deskeys[i]))
89 			return (-1);
90 	}
91 	return (0);
92 }
93 
94 #pragma weak key_gendes_g
95 int
key_gendes_g(des_block deskeys[],int no_keys)96 key_gendes_g(des_block deskeys[], int no_keys)
97 {
98 	int i;
99 
100 	memset(deskeys, 0, no_keys* sizeof (des_block));
101 	for (i = 0; i < no_keys; i++) {
102 		if (key_gendes(&deskeys[i]))
103 			return (-1);
104 	}
105 	return (0);
106 }
107 
108 #pragma weak key_secretkey_is_set_g
109 /*ARGSUSED*/
110 int
key_secretkey_is_set_g(int Keylen,int algtype)111 key_secretkey_is_set_g(int Keylen, int algtype)
112 {
113 	return (key_secretkey_is_set());
114 }
115 
116 #pragma weak des_setparity
117 void
des_setparity_g(des_block * key)118 des_setparity_g(des_block *key)
119 {
120 	des_setparity((char *)key);
121 }
122