iPXE
sha1.h
Go to the documentation of this file.
1#ifndef _IPXE_SHA1_H
2#define _IPXE_SHA1_H
3
4/** @file
5 *
6 * SHA-1 algorithm
7 *
8 */
9
10FILE_LICENCE ( GPL2_OR_LATER );
11FILE_SECBOOT ( PERMITTED );
12
13#include <stdint.h>
14#include <ipxe/crypto.h>
15
16/** An SHA-1 digest */
18 /** Hash output */
20};
21
22/** An SHA-1 data block */
24 /** Raw bytes */
25 uint8_t byte[64];
26 /** Raw dwords */
28 /** Final block structure */
29 struct {
30 /** Padding */
32 /** Length in bits */
34 } final;
35};
36
37/** SHA-1 digest and data block
38 *
39 * The order of fields within this structure is designed to minimise
40 * code size.
41 */
43 /** Digest of data already processed */
45 /** Accumulated data */
47} __attribute__ (( packed ));
48
49/** SHA-1 digest and data block */
51 /** Digest and data block */
53 /** Raw dwords */
54 uint32_t dword[ sizeof ( struct sha1_digest_data ) /
55 sizeof ( uint32_t ) ];
56};
57
58/** An SHA-1 context */
60 /** Amount of accumulated data */
61 size_t len;
62 /** Digest and accumulated data */
64} __attribute__ (( packed ));
65
66/** SHA-1 context size */
67#define SHA1_CTX_SIZE sizeof ( struct sha1_context )
68
69/** SHA-1 block size */
70#define SHA1_BLOCK_SIZE sizeof ( union sha1_block )
71
72/** SHA-1 digest size */
73#define SHA1_DIGEST_SIZE sizeof ( struct sha1_digest )
74
76
77extern void prf_sha1 ( const void *key, size_t key_len, const char *label,
78 const void *data, size_t data_len, void *prf,
79 size_t prf_len );
80extern void pbkdf2_sha1 ( const void *passphrase, size_t pass_len,
81 const void *salt, size_t salt_len,
82 int iterations, void *key, size_t key_len );
83
84#endif /* _IPXE_SHA1_H */
union @162305117151260234136356364136041353210355154177 key
Sense key.
Definition scsi.h:3
unsigned int uint32_t
Definition stdint.h:12
unsigned long long uint64_t
Definition stdint.h:13
unsigned char uint8_t
Definition stdint.h:10
uint8_t data[48]
Additional event data.
Definition ena.h:11
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Definition compiler.h:926
#define __attribute__(x)
Definition compiler.h:10
Cryptographic API.
struct digest_algorithm sha1_algorithm
SHA-1 algorithm.
Definition sha1.c:258
void pbkdf2_sha1(const void *passphrase, size_t pass_len, const void *salt, size_t salt_len, int iterations, void *key, size_t key_len)
PBKDF2 key derivation function using SHA1.
Definition sha1extra.c:148
void prf_sha1(const void *key, size_t key_len, const char *label, const void *data, size_t data_len, void *prf, size_t prf_len)
SHA1 pseudorandom function for creating derived keys.
Definition sha1extra.c:44
A message digest algorithm.
Definition crypto.h:19
A text label widget.
Definition label.h:16
An SHA-1 context.
Definition sha1.h:59
union sha1_digest_data_dwords ddd
Digest and accumulated data.
Definition sha1.h:63
size_t len
Amount of accumulated data.
Definition sha1.h:61
SHA-1 digest and data block.
Definition sha1.h:42
union sha1_block data
Accumulated data.
Definition sha1.h:46
struct sha1_digest digest
Digest of data already processed.
Definition sha1.h:44
An SHA-1 digest.
Definition sha1.h:17
uint32_t h[5]
Hash output.
Definition sha1.h:19
uint32_t data_len
Microcode data size (or 0 to indicate 2000 bytes)
Definition ucode.h:15
An SHA-1 data block.
Definition sha1.h:23
uint64_t len
Length in bits.
Definition sha1.h:33
uint8_t pad[56]
Padding.
Definition sha1.h:31
uint32_t dword[16]
Raw dwords.
Definition sha1.h:27
SHA-1 digest and data block.
Definition sha1.h:50
struct sha1_digest_data dd
Digest and data block.
Definition sha1.h:52
uint32_t dword[sizeof(struct sha1_digest_data)/sizeof(uint32_t)]
Raw dwords.
Definition sha1.h:55