annotate src/lib/pkcs5.h @ 22664:fea53c2725c0

director: Fix director_max_parallel_moves/kicks type Should be uint, not time.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 09 Nov 2017 12:24:16 +0200
parents 2cacbc8e95c5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20252
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
1 #ifndef PKCS5_H
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
2 #define PKCS5_H 1
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
3
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
4 enum pkcs5_pbkdf_mode {
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
5 PKCS5_PBKDF1,
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
6 PKCS5_PBKDF2
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
7 };
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
8
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
9 /*
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
10
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
11 mode - v1.0 or v2.0
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
12 hash - hash_method_lookup return value
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
13 password - private password for generation
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
14 password_len - length of password in octets
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
15 salt - salt for generation
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
16 salt_len - length of salt in octets
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
17 iterations - number of iterations to hash (use at least 1000, a very large number => very very slow)
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
18 dk_len - number of bytes to return from derived key
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
19 result - buffer_t to hold the result, either use dynamic or make sure it fits dk_len
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
20
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
21 non-zero return value indicates that either iterations was less than 1 or dk_len was too large
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
22
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
23 Sample code:
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
24
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
25 buffer_t *result = buffer_create_dynamic(pool_datastack_create(), 256);
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
26 if (pkcs5_pbkdf(PKCS5_PBKDF2, hash_method_lookup("sha256"), "password", 8, "salt", 4, 4096, 256, result) != 0) { // error }
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
27
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
28 */
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
29
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
30 int pkcs5_pbkdf(enum pkcs5_pbkdf_mode mode, const struct hash_method *hash,
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
31 const unsigned char *password, size_t password_len,
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
32 const unsigned char *salt, size_t salt_len,
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
33 unsigned int iterations, uint32_t dk_len,
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
34 buffer_t *result);
2cacbc8e95c5 lib: Add PKCS#5 pbkdf1 and 2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
35 #endif