]> git.sur5r.net Git - openldap/blobdiff - contrib/slapd-modules/passwd/sha2/slapd-sha2.c
Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap
[openldap] / contrib / slapd-modules / passwd / sha2 / slapd-sha2.c
index 20895484c264a9dd81456107d5c2599783abc273..344e4b610eba20c2f0c022d65ecc02831d81fc37 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2009 The OpenLDAP Foundation.
+ * Copyright 2009-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include <stdio.h>
 #endif
 
-/* pw_string64 function taken from libraries/liblutil/passwd.c */
-static int pw_string64(
-       const struct berval *sc,
-       const struct berval *hash,
-       struct berval *b64,
-       const struct berval *salt )
-{
-       int rc;
-       struct berval string;
-       size_t b64len;
-
-       if( salt ) {
-               /* need to base64 combined string */
-               string.bv_len = hash->bv_len + salt->bv_len;
-               string.bv_val = ber_memalloc( string.bv_len + 1 );
-
-               if( string.bv_val == NULL ) {
-                       return LUTIL_PASSWD_ERR;
-               }
-
-               AC_MEMCPY( string.bv_val, hash->bv_val,
-                       hash->bv_len );
-               AC_MEMCPY( &string.bv_val[hash->bv_len], salt->bv_val,
-                       salt->bv_len );
-               string.bv_val[string.bv_len] = '\0';
-
-       } else {
-               string = *hash;
-       }
-
-       b64len = LUTIL_BASE64_ENCODE_LEN( string.bv_len ) + 1;
-       b64->bv_len = b64len + sc->bv_len;
-       b64->bv_val = ber_memalloc( b64->bv_len + 1 );
-
-       if( b64->bv_val == NULL ) {
-               if( salt ) ber_memfree( string.bv_val );
-               return LUTIL_PASSWD_ERR;
-       }
-
-       AC_MEMCPY(b64->bv_val, sc->bv_val, sc->bv_len);
-
-       rc = lutil_b64_ntop(
-               (unsigned char *) string.bv_val, string.bv_len,
-               &b64->bv_val[sc->bv_len], b64len );
-
-       if( salt ) ber_memfree( string.bv_val );
-       
-       if( rc < 0 ) {
-               return LUTIL_PASSWD_ERR;
-       }
-
-       /* recompute length */
-       b64->bv_len = sc->bv_len + rc;
-       assert( strlen(b64->bv_val) == b64->bv_len );
-       return LUTIL_PASSWD_OK;
-}
-
 char * sha256_hex_hash(const char * passwd) {
 
        SHA256_CTX ct;
@@ -170,7 +113,7 @@ static int hash_sha256(
        digest.bv_val = (char *) hash256;
        digest.bv_len = sizeof(hash256);
 
-       return pw_string64(scheme, &digest, hash, NULL);
+       return lutil_passwd_string64(scheme, &digest, hash, NULL);
 }
 
 static int hash_sha384(
@@ -193,7 +136,7 @@ static int hash_sha384(
        digest.bv_val = (char *) hash384;
        digest.bv_len = sizeof(hash384);
 
-       return pw_string64(scheme, &digest, hash, NULL);
+       return lutil_passwd_string64(scheme, &digest, hash, NULL);
 }
 
 static int hash_sha512(
@@ -213,7 +156,7 @@ static int hash_sha512(
        digest.bv_val = (char *) hash512;
        digest.bv_len = sizeof(hash512);
 
-       return pw_string64(scheme, &digest, hash, NULL);
+       return lutil_passwd_string64(scheme, &digest, hash, NULL);
 }
 
 static int chk_sha256(