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