1 /*
2  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 /*
7  * Copyright (c) 2003-2004, Jouni Malinen <jkmaline@cc.hut.fi>
8  * Sun elects to license this software under the BSD license.
9  * See README for more details.
10  */
11 #ifndef __WPA_ENC_H
12 #define	__WPA_ENC_H
13 
14 #pragma ident	"%Z%%M%	%I%	%E% SMI"
15 
16 #include <openssl/sha.h>
17 #include <openssl/md5.h>
18 
19 #ifdef	__cplusplus
20 extern "C" {
21 #endif
22 
23 #define	SHA1_MAC_LEN	SHA_DIGEST_LENGTH
24 #define	MD5_MAC_LEN	MD5_DIGEST_LENGTH
25 
26 void aes_wrap(uint8_t *, int, uint8_t *, uint8_t *);
27 int aes_unwrap(uint8_t *, int, uint8_t *, uint8_t *);
28 
29 void hmac_sha1_vector(unsigned char *, unsigned int,
30     size_t, unsigned char *[], unsigned int *, unsigned char *);
31 
32 void hmac_sha1(unsigned char *, unsigned int,
33     unsigned char *, unsigned int, unsigned char *);
34 
35 void sha1_prf(unsigned char *, unsigned int,
36     char *, unsigned char *, unsigned int, unsigned char *, size_t);
37 
38 void pbkdf2_sha1(char *, char *, size_t, int, unsigned char *, size_t);
39 
40 void rc4_skip(uint8_t *, size_t, size_t, uint8_t *, size_t);
41 void rc4(uint8_t *, size_t, uint8_t *, size_t);
42 
43 void hmac_md5_vector(uint8_t *, size_t, size_t,
44     uint8_t *[], size_t *, uint8_t *);
45 void hmac_md5(uint8_t *, size_t, uint8_t *, size_t, uint8_t *);
46 
47 #ifdef __cplusplus
48 }
49 #endif
50 
51 #endif /* __WPA_ENC_H */
52