xref: /netbsd-src/external/bsd/openldap/dist/libraries/liblutil/ptest.c (revision 549b59ed3ccf0d36d3097190a0db27b770f3a839)
1*549b59edSchristos /*	$NetBSD: ptest.c,v 1.3 2021/08/14 16:14:58 christos Exp $	*/
24e6df137Slukem 
3d11b170bStron /* $OpenLDAP$ */
42de962bdSlukem /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
52de962bdSlukem  *
6*549b59edSchristos  * Copyright 1998-2021 The OpenLDAP Foundation.
72de962bdSlukem  * All rights reserved.
82de962bdSlukem  *
92de962bdSlukem  * Redistribution and use in source and binary forms, with or without
102de962bdSlukem  * modification, are permitted only as authorized by the OpenLDAP
112de962bdSlukem  * Public License.
122de962bdSlukem  *
132de962bdSlukem  * A copy of this license is available in the file LICENSE in the
142de962bdSlukem  * top-level directory of the distribution or, alternatively, at
152de962bdSlukem  * <http://www.OpenLDAP.org/license.html>.
162de962bdSlukem  */
172de962bdSlukem 
18376af7d7Schristos #include <sys/cdefs.h>
19*549b59edSchristos __RCSID("$NetBSD: ptest.c,v 1.3 2021/08/14 16:14:58 christos Exp $");
20376af7d7Schristos 
212de962bdSlukem #include "portable.h"
222de962bdSlukem 
232de962bdSlukem #include <stdio.h>
242de962bdSlukem 
252de962bdSlukem #include <ac/stdlib.h>
262de962bdSlukem 
272de962bdSlukem #include <ac/ctype.h>
282de962bdSlukem #include <ac/signal.h>
292de962bdSlukem #include <ac/socket.h>
302de962bdSlukem #include <ac/string.h>
312de962bdSlukem #include <ac/time.h>
322de962bdSlukem 
332de962bdSlukem #include <lber.h>
342de962bdSlukem 
352de962bdSlukem #include "lutil.h"
362de962bdSlukem 
372de962bdSlukem /*
382de962bdSlukem  * Password Test Program
392de962bdSlukem  */
402de962bdSlukem 
412de962bdSlukem static char *hash[] = {
422de962bdSlukem #ifdef SLAP_AUTHPASSWD
432de962bdSlukem 	"SHA1", "MD5",
442de962bdSlukem #else
452de962bdSlukem #ifdef SLAPD_CRYPT
462de962bdSlukem 	"{CRYPT}",
472de962bdSlukem #endif
482de962bdSlukem 	"{SSHA}", "{SMD5}",
492de962bdSlukem 	"{SHA}", "{MD5}",
502de962bdSlukem 	"{BOGUS}",
512de962bdSlukem #endif
522de962bdSlukem 	NULL
532de962bdSlukem };
542de962bdSlukem 
552de962bdSlukem static struct berval pw[] = {
562de962bdSlukem 	{ sizeof("secret")-1,			"secret" },
572de962bdSlukem 	{ sizeof("binary\0secret")-1,	"binary\0secret" },
582de962bdSlukem 	{ 0, NULL }
592de962bdSlukem };
602de962bdSlukem 
612de962bdSlukem int
main(int argc,char * argv[])622de962bdSlukem main( int argc, char *argv[] )
632de962bdSlukem {
642de962bdSlukem 	int i, j, rc;
652de962bdSlukem 	struct berval *passwd;
662de962bdSlukem #ifdef SLAP_AUTHPASSWD
672de962bdSlukem 	struct berval *salt;
682de962bdSlukem #endif
692de962bdSlukem 	struct berval bad;
702de962bdSlukem 	bad.bv_val = "bad password";
712de962bdSlukem 	bad.bv_len = sizeof("bad password")-1;
722de962bdSlukem 
732de962bdSlukem 	for( i= 0; hash[i]; i++ ) {
742de962bdSlukem 		for( j = 0; pw[j].bv_len; j++ ) {
752de962bdSlukem #ifdef SLAP_AUTHPASSWD
762de962bdSlukem 			rc = lutil_authpasswd_hash( &pw[j],
772de962bdSlukem 				&passwd, &salt, hash[i] );
782de962bdSlukem 
792de962bdSlukem 			if( rc )
802de962bdSlukem #else
812de962bdSlukem 			passwd = lutil_passwd_hash( &pw[j], hash[i] );
822de962bdSlukem 
832de962bdSlukem 			if( passwd == NULL )
842de962bdSlukem #endif
852de962bdSlukem 			{
862de962bdSlukem 				printf("%s generate fail: %s (%d)\n",
872de962bdSlukem 					hash[i], pw[j].bv_val, pw[j].bv_len );
882de962bdSlukem 				continue;
892de962bdSlukem 			}
902de962bdSlukem 
912de962bdSlukem 
922de962bdSlukem #ifdef SLAP_AUTHPASSWD
932de962bdSlukem 			rc = lutil_authpasswd( &pw[j], passwd, salt, NULL );
942de962bdSlukem #else
952de962bdSlukem 			rc = lutil_passwd( passwd, &pw[j], NULL );
962de962bdSlukem #endif
972de962bdSlukem 
982de962bdSlukem 			printf("%s (%d): %s (%d)\t(%d) %s\n",
992de962bdSlukem 				pw[j].bv_val, pw[j].bv_len, passwd->bv_val, passwd->bv_len,
1002de962bdSlukem 				rc, rc == 0 ? "OKAY" : "BAD" );
1012de962bdSlukem 
1022de962bdSlukem #ifdef SLAP_AUTHPASSWD
1032de962bdSlukem 			rc = lutil_authpasswd( passwd, salt, &bad, NULL );
1042de962bdSlukem #else
1052de962bdSlukem 			rc = lutil_passwd( passwd, &bad, NULL );
1062de962bdSlukem #endif
1072de962bdSlukem 
1082de962bdSlukem 			printf("%s (%d): %s (%d)\t(%d) %s\n",
1092de962bdSlukem 				bad.bv_val, bad.bv_len, passwd->bv_val, passwd->bv_len,
1102de962bdSlukem 				rc, rc != 0 ? "OKAY" : "BAD" );
1112de962bdSlukem 		}
1122de962bdSlukem 
1132de962bdSlukem 		printf("\n");
1142de962bdSlukem 	}
1152de962bdSlukem 
1162de962bdSlukem 	return EXIT_SUCCESS;
1172de962bdSlukem }
118