The introduced SHA1_NOFINAL hasher was not sufficient for EAP-AKA,
as it requires to XOR the key into the hashers state. A new SHA1 based keyed hash function, implemented as PRF, enables EAP-AKA and the FIPS-PRF function to properly use the existing SHA1 implementation.
This commit is contained in:
@@ -23,8 +23,10 @@
|
||||
#define SHA1_HASHER_H_
|
||||
|
||||
typedef struct sha1_hasher_t sha1_hasher_t;
|
||||
typedef struct sha1_keyed_prf_t sha1_keyed_prf_t;
|
||||
|
||||
#include <crypto/hashers/hasher.h>
|
||||
#include <crypto/prfs/prf.h>
|
||||
|
||||
/**
|
||||
* Implementation of hasher_t interface using the SHA1 algorithm.
|
||||
@@ -37,14 +39,31 @@ struct sha1_hasher_t {
|
||||
hasher_t hasher_interface;
|
||||
};
|
||||
|
||||
/**
|
||||
* Implementation of prf_t interface using keyed SHA1 algorithm (used for EAP-AKA).
|
||||
*/
|
||||
struct sha1_keyed_prf_t {
|
||||
|
||||
/**
|
||||
* Implements prf_t interface.
|
||||
*/
|
||||
prf_t prf_interface;
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a new sha1_hasher_t.
|
||||
*
|
||||
* This implementation supports two algorithms, HASH_SHA1 and HASH_SHA1_NOFINAL
|
||||
*
|
||||
* @param algo algorithm
|
||||
* @param algo algorithm, must be HASH_SHA1
|
||||
* @return sha1_hasher_t object
|
||||
*/
|
||||
sha1_hasher_t *sha1_hasher_create(hash_algorithm_t algo);
|
||||
|
||||
/**
|
||||
* Creates a new sha1_keyed_prf_t.
|
||||
*
|
||||
* @param algo algorithm, must be PRF_KEYED_SHA1
|
||||
* @return sha1_keyed_prf_tobject
|
||||
*/
|
||||
sha1_keyed_prf_t *sha1_keyed_prf_create(pseudo_random_function_t algo);
|
||||
|
||||
#endif /*SHA1_HASHER_H_ @}*/
|
||||
|
||||
Reference in New Issue
Block a user