1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* 2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * SHA1 hash implementation and interface functions 3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi> 4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify 6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as 7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation. 8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD 10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license. 11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details. 13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifndef SHA1_H 16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define SHA1_H 17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define SHA1_MAC_LEN 20 19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid hmac_sha1_vector(const u8 *key, size_t key_len, size_t num_elem, 21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt const u8 *addr[], const size_t *len, u8 *mac); 22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid hmac_sha1(const u8 *key, size_t key_len, const u8 *data, size_t data_len, 23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 *mac); 24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid sha1_prf(const u8 *key, size_t key_len, const char *label, 25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt const u8 *data, size_t data_len, u8 *buf, size_t buf_len); 26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid sha1_t_prf(const u8 *key, size_t key_len, const char *label, 27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt const u8 *seed, size_t seed_len, u8 *buf, size_t buf_len); 28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint __must_check tls_prf(const u8 *secret, size_t secret_len, 29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt const char *label, const u8 *seed, size_t seed_len, 30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt u8 *out, size_t outlen); 31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid pbkdf2_sha1(const char *passphrase, const char *ssid, size_t ssid_len, 32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt int iterations, u8 *buf, size_t buflen); 33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifdef CONFIG_CRYPTO_INTERNAL 35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct SHA1Context; 36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid SHA1Init(struct SHA1Context *context); 38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid SHA1Update(struct SHA1Context *context, const void *data, u32 len); 39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid SHA1Final(unsigned char digest[20], struct SHA1Context *context); 40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* CONFIG_CRYPTO_INTERNAL */ 41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* SHA1_H */ 43