1 #include <string.h>
2 #include <openssl/sha.h>
3 #include "password.h"
4
key_from_password(const char * a_password,char * a_key)5 void key_from_password(const char *a_password, char *a_key)
6 {
7 unsigned char digest[256 / 8] = {0}; // SHA 256 uses 256/8 bytes.
8 int i;
9
10 SHA256((const unsigned char *)a_password, strlen(a_password), digest);
11 for (i = 0; i < 40872; i++) {
12 SHA256(digest, 32, digest);
13 }
14
15 memcpy(a_key, digest, sizeof(digest));
16 }
17
key_hash(const char * a_key,char * a_hash)18 void key_hash(const char *a_key, char *a_hash)
19 {
20 unsigned char digest[256 / 8];
21 int i;
22
23 memcpy(digest, a_key, sizeof(digest));
24 for (i = 0; i < 30752; i++) {
25 SHA256(digest, 32, digest);
26 }
27
28 memcpy(a_hash, digest, sizeof(digest));
29 }
30