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