147593e96SBill Paul /* 247593e96SBill Paul * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 347593e96SBill Paul * unrestricted use provided that this legend is included on all tape 447593e96SBill Paul * media and as a part of the software program in whole or part. Users 547593e96SBill Paul * may copy or modify Sun RPC without charge, but are not authorized 647593e96SBill Paul * to license or distribute it to anyone else except as part of a product or 747593e96SBill Paul * program developed by the user or with the express written consent of 847593e96SBill Paul * Sun Microsystems, Inc. 947593e96SBill Paul * 1047593e96SBill Paul * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 1147593e96SBill Paul * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 1247593e96SBill Paul * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 1347593e96SBill Paul * 1447593e96SBill Paul * Sun RPC is provided with no support and without any obligation on the 1547593e96SBill Paul * part of Sun Microsystems, Inc. to assist in its use, correction, 1647593e96SBill Paul * modification or enhancement. 1747593e96SBill Paul * 1847593e96SBill Paul * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 1947593e96SBill Paul * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 2047593e96SBill Paul * OR ANY PART THEREOF. 2147593e96SBill Paul * 2247593e96SBill Paul * In no event will Sun Microsystems, Inc. be liable for any lost revenue 2347593e96SBill Paul * or profits or other special, indirect and consequential damages, even if 2447593e96SBill Paul * Sun has been advised of the possibility of such damages. 2547593e96SBill Paul * 2647593e96SBill Paul * Sun Microsystems, Inc. 2747593e96SBill Paul * 2550 Garcia Avenue 2847593e96SBill Paul * Mountain View, California 94043 2947593e96SBill Paul */ 3047593e96SBill Paul #if !defined(lint) && defined(SCCSIDS) 3147593e96SBill Paul static char sccsid[] = "@(#)secretkey.c 1.8 91/03/11 Copyr 1986 Sun Micro"; 3247593e96SBill Paul #endif 3347593e96SBill Paul 3447593e96SBill Paul /* 3547593e96SBill Paul * secretkey.c 3647593e96SBill Paul * Copyright (C) 1986, Sun Microsystems, Inc. 3747593e96SBill Paul */ 3847593e96SBill Paul 3947593e96SBill Paul /* 4047593e96SBill Paul * Secret key lookup routines 4147593e96SBill Paul */ 4247593e96SBill Paul #include <stdio.h> 4347593e96SBill Paul #include <pwd.h> 4447593e96SBill Paul #include <rpc/rpc.h> 4547593e96SBill Paul #include <rpc/key_prot.h> 4647593e96SBill Paul #include <rpcsvc/yp_prot.h> 4747593e96SBill Paul #include <rpcsvc/ypclnt.h> 4847593e96SBill Paul #include <string.h> 4947593e96SBill Paul 5047593e96SBill Paul extern int xdecrypt __P(( char *, char * )); 5147593e96SBill Paul 5247593e96SBill Paul /* 5347593e96SBill Paul * Get somebody's encrypted secret key from the database, using the given 5447593e96SBill Paul * passwd to decrypt it. 5547593e96SBill Paul */ 5647593e96SBill Paul int 5747593e96SBill Paul getsecretkey(netname, secretkey, passwd) 5847593e96SBill Paul char *netname; 5947593e96SBill Paul char *secretkey; 6047593e96SBill Paul char *passwd; 6147593e96SBill Paul { 6247593e96SBill Paul char lookup[3 * HEXKEYBYTES]; 6347593e96SBill Paul char *p; 6447593e96SBill Paul 6547593e96SBill Paul if (secretkey == NULL) 6647593e96SBill Paul return (0); 6747593e96SBill Paul if (!getpublicandprivatekey(netname, lookup)) 6847593e96SBill Paul return (0); 6947593e96SBill Paul p = strchr(lookup, ':'); 7047593e96SBill Paul if (p == NULL) { 7147593e96SBill Paul return (0); 7247593e96SBill Paul } 7347593e96SBill Paul p++; 7447593e96SBill Paul if (!xdecrypt(p, passwd)) { 7547593e96SBill Paul return (0); 7647593e96SBill Paul } 7747593e96SBill Paul if (memcmp(p, p + HEXKEYBYTES, KEYCHECKSUMSIZE) != 0) { 7847593e96SBill Paul secretkey[0] = '\0'; 7947593e96SBill Paul return (1); 8047593e96SBill Paul } 8147593e96SBill Paul p[HEXKEYBYTES] = '\0'; 8247593e96SBill Paul (void) strncpy(secretkey, p, HEXKEYBYTES); 8347593e96SBill Paul secretkey[HEXKEYBYTES] = '\0'; 8447593e96SBill Paul return (1); 8547593e96SBill Paul } 86