diff src/auth/mech-skey.c @ 5598:971050640e3b HEAD

All password schemes can now be encoded with base64 or hex. The encoding is ".b64", ".base64" or ".hex" suffix in the scheme, eg. {plain.b64}. Password scheme verification function can now be set to NULL, in which case the verification is done by generating a new crypted password from given plaintext password and comparing it.
author Timo Sirainen <tss@iki.fi>
date Sun, 13 May 2007 15:17:09 +0300
parents f8dc0bdb06a7
children 84eea1977632
line wrap: on
line diff
--- a/src/auth/mech-skey.c	Sun May 13 14:53:05 2007 +0300
+++ b/src/auth/mech-skey.c	Sun May 13 15:17:09 2007 +0300
@@ -17,13 +17,14 @@
 
 static void 
 skey_send_challenge(struct auth_request *auth_request,
-		    const char *credentials)
+		    const unsigned char *credentials, size_t size)
 {
 	struct otp_auth_request *request =
 		(struct otp_auth_request *)auth_request;
 	const char *answer;
 
-	if (otp_parse_dbentry(credentials, &request->state) != 0) {
+	if (otp_parse_dbentry(t_strndup(credentials, size),
+			      &request->state) != 0) {
 		auth_request_log_error(&request->auth_request, "skey",
 				       "invalid OTP data in passdb");
 		auth_request_fail(auth_request);
@@ -62,12 +63,12 @@
 
 static void
 otp_credentials_callback(enum passdb_result result,
-			 const char *credentials,
+			 const unsigned char *credentials, size_t size,
 			 struct auth_request *auth_request)
 {
 	switch (result) {
 	case PASSDB_RESULT_OK:
-		skey_send_challenge(auth_request, credentials);
+		skey_send_challenge(auth_request, credentials, size);
 		break;
 	case PASSDB_RESULT_INTERNAL_FAILURE:
 		auth_request_internal_failure(auth_request);
@@ -80,12 +81,12 @@
 
 static void
 skey_credentials_callback(enum passdb_result result,
-			  const char *credentials,
+			  const unsigned char *credentials, size_t size,
 			  struct auth_request *auth_request)
 {
 	switch (result) {
 	case PASSDB_RESULT_OK:
-		skey_send_challenge(auth_request, credentials);
+		skey_send_challenge(auth_request, credentials, size);
 		break;
 	case PASSDB_RESULT_INTERNAL_FAILURE:
 		auth_request_internal_failure(auth_request);