diff options
Diffstat (limited to 'lib/auth_psk_passwd.c')
-rw-r--r-- | lib/auth_psk_passwd.c | 220 |
1 files changed, 120 insertions, 100 deletions
diff --git a/lib/auth_psk_passwd.c b/lib/auth_psk_passwd.c index 76a2d597d1..237a1d015e 100644 --- a/lib/auth_psk_passwd.c +++ b/lib/auth_psk_passwd.c @@ -43,44 +43,48 @@ /* this function parses passwd.psk file. Format is: * string(username):hex(passwd) */ -static int pwd_put_values(gnutls_datum* psk, char *str) +static int +pwd_put_values (gnutls_datum * psk, char *str) { - char *p; - int len, ret; - - p = strchr(str, ':'); - if (p == NULL) { - gnutls_assert(); - return GNUTLS_E_SRP_PWD_PARSING_ERROR; + char *p; + int len, ret; + + p = strchr (str, ':'); + if (p == NULL) + { + gnutls_assert (); + return GNUTLS_E_SRP_PWD_PARSING_ERROR; } - *p = '\0'; - p++; + *p = '\0'; + p++; - /* skip username - */ + /* skip username + */ - /* read the key - */ - len = strlen(p); - if (p[len - 1] == '\n' || p[len - 1] == ' ') - len--; + /* read the key + */ + len = strlen (p); + if (p[len - 1] == '\n' || p[len - 1] == ' ') + len--; - psk->size = len / 2; - psk->data = gnutls_malloc( psk->size); - if (psk->data == NULL) { - gnutls_assert(); - return GNUTLS_E_MEMORY_ERROR; + psk->size = len / 2; + psk->data = gnutls_malloc (psk->size); + if (psk->data == NULL) + { + gnutls_assert (); + return GNUTLS_E_MEMORY_ERROR; } - ret = _gnutls_hex2bin( (opaque*)p, len, psk->data, &psk->size); - if ( ret < 0) { - gnutls_assert(); - return ret; + ret = _gnutls_hex2bin ((opaque *) p, len, psk->data, &psk->size); + if (ret < 0) + { + gnutls_assert (); + return ret; } - return 0; + return 0; } @@ -88,110 +92,126 @@ static int pwd_put_values(gnutls_datum* psk, char *str) /* Randomizes the given password entry. It actually sets a random password. * Returns 0 on success. */ -static int _randomize_psk(gnutls_datum * psk) +static int +_randomize_psk (gnutls_datum * psk) { - psk->data = gnutls_malloc(16); - if (psk->data == NULL) { - gnutls_assert(); - return GNUTLS_E_MEMORY_ERROR; + psk->data = gnutls_malloc (16); + if (psk->data == NULL) + { + gnutls_assert (); + return GNUTLS_E_MEMORY_ERROR; } - psk->size = 16; - if (gc_nonce ((char*)psk->data, 16) != GC_OK) { - gnutls_assert(); - return GNUTLS_E_RANDOM_FAILED; + psk->size = 16; + if (gc_nonce ((char *) psk->data, 16) != GC_OK) + { + gnutls_assert (); + return GNUTLS_E_RANDOM_FAILED; } - return 0; + return 0; } /* Returns the PSK key of the given user. * If the user doesn't exist a random password is returned instead. */ -int _gnutls_psk_pwd_find_entry(gnutls_session_t session, char *username, - gnutls_datum* psk) +int +_gnutls_psk_pwd_find_entry (gnutls_session_t session, char *username, + gnutls_datum * psk) { - gnutls_psk_server_credentials_t cred; - FILE *fd; - char line[2 * 1024]; - uint i, len; - int ret; - - cred = (gnutls_psk_server_credentials_t) - _gnutls_get_cred(session->key, GNUTLS_CRD_PSK, NULL); - if (cred == NULL) { - gnutls_assert(); - return GNUTLS_E_INSUFFICIENT_CREDENTIALS; + gnutls_psk_server_credentials_t cred; + FILE *fd; + char line[2 * 1024]; + uint i, len; + int ret; + + cred = (gnutls_psk_server_credentials_t) + _gnutls_get_cred (session->key, GNUTLS_CRD_PSK, NULL); + if (cred == NULL) + { + gnutls_assert (); + return GNUTLS_E_INSUFFICIENT_CREDENTIALS; } - /* if the callback which sends the parameters is - * set, use it. - */ - if (cred->pwd_callback != NULL) { - ret = cred->pwd_callback(session, username, psk); - - if (ret == 1) { /* the user does not exist */ - ret = _randomize_psk(psk); - if (ret < 0) { - gnutls_assert(); - return ret; - } - return 0; + /* if the callback which sends the parameters is + * set, use it. + */ + if (cred->pwd_callback != NULL) + { + ret = cred->pwd_callback (session, username, psk); + + if (ret == 1) + { /* the user does not exist */ + ret = _randomize_psk (psk); + if (ret < 0) + { + gnutls_assert (); + return ret; + } + return 0; } - if (ret < 0) { - gnutls_assert(); - return GNUTLS_E_SRP_PWD_ERROR; + if (ret < 0) + { + gnutls_assert (); + return GNUTLS_E_SRP_PWD_ERROR; } - return 0; + return 0; } - /* The callback was not set. Proceed. - */ - if (cred->password_file == NULL) { - gnutls_assert(); - return GNUTLS_E_SRP_PWD_ERROR; + /* The callback was not set. Proceed. + */ + if (cred->password_file == NULL) + { + gnutls_assert (); + return GNUTLS_E_SRP_PWD_ERROR; } - /* Open the selected password file. - */ - fd = fopen(cred->password_file, "r"); - if (fd == NULL) { - gnutls_assert(); - return GNUTLS_E_SRP_PWD_ERROR; + /* Open the selected password file. + */ + fd = fopen (cred->password_file, "r"); + if (fd == NULL) + { + gnutls_assert (); + return GNUTLS_E_SRP_PWD_ERROR; } - len = strlen(username); - while (fgets(line, sizeof(line), fd) != NULL) { - /* move to first ':' */ - i = 0; - while ((line[i] != ':') && (line[i] != '\0') && (i < sizeof(line))) { - i++; + len = strlen (username); + while (fgets (line, sizeof (line), fd) != NULL) + { + /* move to first ':' */ + i = 0; + while ((line[i] != ':') && (line[i] != '\0') && (i < sizeof (line))) + { + i++; } - if (strncmp(username, line, MAX(i, len)) == 0) { - ret = pwd_put_values(psk, line); - if (ret < 0) { - gnutls_assert(); - return GNUTLS_E_SRP_PWD_ERROR; - } - return 0; + if (strncmp (username, line, MAX (i, len)) == 0) + { + ret = pwd_put_values (psk, line); + if (ret < 0) + { + gnutls_assert (); + return GNUTLS_E_SRP_PWD_ERROR; + } + return 0; } } - /* user was not found. Fake him. - * the last index found and randomize the entry. - */ - ret = _randomize_psk(psk); - if (ret < 0) { - gnutls_assert(); - return ret; + /* user was not found. Fake him. + * the last index found and randomize the entry. + */ + ret = _randomize_psk (psk); + if (ret < 0) + { + gnutls_assert (); + return ret; } - return 0; + return 0; } -#endif /* ENABLE PSK */ +#endif /* ENABLE PSK */ |