diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-05-04 13:05:48 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-05-04 13:05:48 +0000 |
commit | 8f82a8e581e02a32aa97069052cdfccfc522b930 (patch) | |
tree | 06edca357d0f97648488fad490676d3b61b6553e /lib/crypt.c | |
parent | d93f1d1688a500a822d1d7793cc8e60563436db1 (diff) | |
download | gnutls-8f82a8e581e02a32aa97069052cdfccfc522b930.tar.gz |
More adds for SRP - SRPSHA1 and bcrypt
Diffstat (limited to 'lib/crypt.c')
-rw-r--r-- | lib/crypt.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/crypt.c b/lib/crypt.c index 054f8a56af..3f71923a33 100644 --- a/lib/crypt.c +++ b/lib/crypt.c @@ -20,19 +20,22 @@ #include "defines.h" #include "crypt_bcrypt.h" +#include "crypt_srpsha1.h" #include "gnutls_random.h" -enum crypt_algo { MD5_CRYPT, BLOWFISH_CRYPT }; +enum crypt_algo { BLOWFISH_CRYPT, SRPSHA1_CRYPT }; + typedef enum crypt_algo crypt_algo; -char * gnutls_crypt(const char* username, const char *passwd, crypt_algo algo) { +char * gnutls_crypt(const char* username, const char *passwd, crypt_algo algo, int salt) { switch(algo) { - case MD5_CRYPT: - break; case BLOWFISH_CRYPT: /* bcrypt */ - return crypt_bcrypt_wrapper(passwd, 6); - break; + /* salt in bcrypt is actually the cost */ + return crypt_bcrypt_wrapper(passwd, salt); + case SRPSHA1_CRYPT: /* bcrypt */ + /* salt in bcrypt is the salt size */ + return crypt_srpsha1_wrapper(username, passwd, salt); } return NULL; } @@ -46,6 +49,11 @@ int gnutls_crypt_vrfy(const char* username, const char *passwd, char* salt) { case '2': cr = crypt_bcrypt(passwd, salt); if (strncmp(cr, salt, strlen(cr))==0) return 0; + break; + case '4': + cr = crypt_srpsha1(username, passwd, salt); + if (strncmp(cr, salt, strlen(cr))==0) return 0; + break; } } return 1; |