forked from omgneeq/ps3utils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sha1.h
55 lines (45 loc) · 1.61 KB
/
sha1.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* SHA1 hash implementation and interface functions
* Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Alternatively, this software may be distributed under the terms of BSD
* license.
*
* See README and COPYING for more details.
*/
#ifndef SHA1_H
#define SHA1_H
#include <stdint.h>
#include <stddef.h>
#define SHA1_MAC_LEN 20
struct SHA1Context {
uint32_t state[5];
uint32_t count[2];
unsigned char buffer[64];
};
typedef struct SHA1Context SHA1_CTX;
void SHA1Init(SHA1_CTX *context);
void SHA1Update(SHA1_CTX *context, const void *data, uint32_t len);
void SHA1Final(unsigned char digest[20], SHA1_CTX *context);
struct HMACContext {
SHA1_CTX context;
uint8_t key[64];
size_t key_len;
};
typedef struct HMACContext HMAC_CTX;
void HMACInit(HMAC_CTX *context, const uint8_t *key, size_t key_len);
void HMACUpdate(HMAC_CTX *context, const void *data, uint32_t len);
void HMACFinal(unsigned char digest[20], HMAC_CTX *context);
void sha1_vector(size_t num_elem, const uint8_t *addr[], const size_t *len,
uint8_t *mac);
void hmac_sha1_vector(const uint8_t *key, size_t key_len, size_t num_elem,
const uint8_t *addr[], const size_t *len, uint8_t *mac);
void hmac_sha1(const uint8_t *key, size_t key_len,
const uint8_t *data, size_t data_len, uint8_t *mac);
void sha1_prf(const uint8_t *key, size_t key_len, const char *label,
const uint8_t *data, size_t data_len, uint8_t *buf, size_t buf_len);
#endif /* SHA1_H */