taskrambler  0.1.8
Web server and task management solution.
hash_pw.c File Reference
#include <sys/types.h>
#include <openssl/evp.h>
#include <openssl/rand.h>
#include "class.h"
#include "auth/storage.h"
#include "utils/memory.h"
#include "commons.h"
+ Include dependency graph for hash_pw.c:

Go to the source code of this file.

Macros

#define PBKDF2_ITERATIONS   2048
 

Functions

int hash_pw (const char *password, const size_t npassword, unsigned char *hash, unsigned char **salt)
 

Detailed Description

Author
Georg Hopp

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file hash_pw.c.

Macro Definition Documentation

#define PBKDF2_ITERATIONS   2048

Definition at line 38 of file hash_pw.c.

Referenced by hash_pw().

Function Documentation

int hash_pw ( const char *  ,
const size_t  ,
unsigned char *  ,
unsigned char **   
)
Todo:
In future this should use a more general purpose hash function, which then will be in utils/hash.c

Definition at line 74 of file hash_pw.c.

References FALSE, HASH_SIZE, MEM_FREE, memCalloc(), PBKDF2_ITERATIONS, SALT_SIZE, and TRUE.

Referenced by applicationUpdatePassword(), and authStorageAuthenticate().

79 {
80  if (NULL == *salt) {
81  *salt = memCalloc(SALT_SIZE, sizeof(unsigned char));
82  if (0 > RAND_pseudo_bytes(*salt, SALT_SIZE)) {
83  MEM_FREE(*salt);
84  return FALSE;
85  }
86  }
87 
88  if (0 == PKCS5_PBKDF2_HMAC(
89  password,
90  npassword,
91  *salt,
92  SALT_SIZE,
94  EVP_sha512(),
95  HASH_SIZE,
96  hash)) {
97  MEM_FREE(*salt);
98  return FALSE;
99  }
100 
101  return TRUE;
102 }
#define MEM_FREE(seg)
Definition: memory.h:28
#define SALT_SIZE
Definition: auth/storage.h:34
#define FALSE
Definition: commons.h:28
#define TRUE
Definition: commons.h:27
#define PBKDF2_ITERATIONS
Definition: hash_pw.c:38
void * memCalloc(size_t, size_t)
Definition: memory.c:818
#define HASH_SIZE
Definition: auth/storage.h:35

+ Here is the call graph for this function:

+ Here is the caller graph for this function: