Home | History | Annotate | Download | only in crypto
      1 /*
      2  * SHA1 hash implementation and interface functions
      3  * Copyright (c) 2003-2005, Jouni Malinen <j (at) w1.fi>
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License version 2 as
      7  * published by the Free Software Foundation.
      8  *
      9  * Alternatively, this software may be distributed under the terms of BSD
     10  * license.
     11  *
     12  * See README and COPYING for more details.
     13  */
     14 
     15 #ifndef SHA1_H
     16 #define SHA1_H
     17 
     18 #define SHA1_MAC_LEN 20
     19 
     20 void hmac_sha1_vector(const u8 *key, size_t key_len, size_t num_elem,
     21 		      const u8 *addr[], const size_t *len, u8 *mac);
     22 void hmac_sha1(const u8 *key, size_t key_len, const u8 *data, size_t data_len,
     23 	       u8 *mac);
     24 void sha1_prf(const u8 *key, size_t key_len, const char *label,
     25 	      const u8 *data, size_t data_len, u8 *buf, size_t buf_len);
     26 void sha1_t_prf(const u8 *key, size_t key_len, const char *label,
     27 		const u8 *seed, size_t seed_len, u8 *buf, size_t buf_len);
     28 int __must_check tls_prf(const u8 *secret, size_t secret_len,
     29 			 const char *label, const u8 *seed, size_t seed_len,
     30 			 u8 *out, size_t outlen);
     31 void pbkdf2_sha1(const char *passphrase, const char *ssid, size_t ssid_len,
     32 		 int iterations, u8 *buf, size_t buflen);
     33 
     34 #ifdef CONFIG_CRYPTO_INTERNAL
     35 struct SHA1Context;
     36 
     37 void SHA1Init(struct SHA1Context *context);
     38 void SHA1Update(struct SHA1Context *context, const void *data, u32 len);
     39 void SHA1Final(unsigned char digest[20], struct SHA1Context *context);
     40 #endif /* CONFIG_CRYPTO_INTERNAL */
     41 
     42 #endif /* SHA1_H */
     43