summaryrefslogtreecommitdiff
path: root/lib/crypt.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2001-05-04 13:05:48 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2001-05-04 13:05:48 +0000
commit8f82a8e581e02a32aa97069052cdfccfc522b930 (patch)
tree06edca357d0f97648488fad490676d3b61b6553e /lib/crypt.c
parentd93f1d1688a500a822d1d7793cc8e60563436db1 (diff)
downloadgnutls-8f82a8e581e02a32aa97069052cdfccfc522b930.tar.gz
More adds for SRP - SRPSHA1 and bcrypt
Diffstat (limited to 'lib/crypt.c')
-rw-r--r--lib/crypt.c20
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;