edits
[iotcloud.git] / version2 / src / C / pbkdf2-sha256.h
1 #ifndef PBKDF2_SHA256_H
2 #define PBKDF2_SHA256_H
3
4 typedef struct {
5         unsigned long total[2]; /*!< number of bytes processed  */
6         unsigned long state[8]; /*!< intermediate digest state  */
7         unsigned char buffer[64];       /*!< data block being processed */
8
9         unsigned char ipad[64]; /*!< HMAC: inner padding        */
10         unsigned char opad[64]; /*!< HMAC: outer padding        */
11         int is224;              /*!< 0 => SHA-256, else SHA-224 */
12 } sha2_context;
13
14 void sha2_starts( sha2_context *ctx, int is224 );
15 void sha2_update( sha2_context *ctx, const unsigned char *input, size_t ilen );
16 void sha2_finish( sha2_context *ctx, unsigned char output[32] );
17
18 void sha2_hmac_starts( sha2_context *ctx, const unsigned char *key, size_t keylen, int is224 );
19 void sha2_hmac_update( sha2_context *ctx, const unsigned char *input, size_t ilen );
20 void sha2_hmac_finish( sha2_context *ctx, unsigned char output[32] );
21 void sha2_hmac_reset( sha2_context *ctx );
22
23
24 void PKCS5_PBKDF2_HMAC(unsigned char *password, size_t plen,
25                                                                                          unsigned char *salt, size_t slen,
26                                                                                          const unsigned long iteration_count, const unsigned long key_length,
27                                                                                          unsigned char *output);
28
29 #endif