10 FILE_LICENCE ( GPL2_OR_LATER );
13 #include <ipxe/crypto.h>
15 /** An SHA-1 digest */
21 /** An SHA-1 data block */
27 /** Final block structure */
36 /** SHA-1 digest and data block
38 * The order of fields within this structure is designed to minimise
41 struct sha1_digest_data {
42 /** Digest of data already processed */
43 struct sha1_digest digest;
44 /** Accumulated data */
45 union sha1_block data;
46 } __attribute__ (( packed ));
48 /** SHA-1 digest and data block */
49 union sha1_digest_data_dwords {
50 /** Digest and data block */
51 struct sha1_digest_data dd;
53 uint32_t dword[ sizeof ( struct sha1_digest_data ) /
54 sizeof ( uint32_t ) ];
57 /** An SHA-1 context */
59 /** Amount of accumulated data */
61 /** Digest and accumulated data */
62 union sha1_digest_data_dwords ddd;
63 } __attribute__ (( packed ));
65 /** SHA-1 context size */
66 #define SHA1_CTX_SIZE sizeof ( struct sha1_context )
68 /** SHA-1 digest size */
69 #define SHA1_DIGEST_SIZE sizeof ( struct sha1_digest )
71 extern struct digest_algorithm sha1_algorithm;
73 extern void prf_sha1 ( const void *key, size_t key_len, const char *label,
74 const void *data, size_t data_len, void *prf,
76 extern void pbkdf2_sha1 ( const void *passphrase, size_t pass_len,
77 const void *salt, size_t salt_len,
78 int iterations, void *key, size_t key_len );
80 #endif /* _IPXE_SHA1_H */