iPXE
md4.h
Go to the documentation of this file.
1 #ifndef _IPXE_MD4_H
2 #define _IPXE_MD4_H
3 
4 /** @file
5  *
6  * MD4 algorithm
7  *
8  */
9 
10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11 
12 #include <stdint.h>
13 #include <ipxe/crypto.h>
14 
15 /** An MD4 digest */
16 struct md4_digest {
17  /** Hash output */
18  uint32_t h[4];
19 };
20 
21 /** An MD4 data block */
22 union md4_block {
23  /** Raw bytes */
24  uint8_t byte[64];
25  /** Raw dwords */
27  /** Final block structure */
28  struct {
29  /** Padding */
30  uint8_t pad[56];
31  /** Length in bits */
33  } final;
34 };
35 
36 /** MD4 digest and data block
37  *
38  * The order of fields within this structure is designed to minimise
39  * code size.
40  */
42  /** Digest of data already processed */
44  /** Accumulated data */
45  union md4_block data;
46 } __attribute__ (( packed ));
47 
48 /** MD4 digest and data block */
50  /** Digest and data block */
52  /** Raw dwords */
53  uint32_t dword[ sizeof ( struct md4_digest_data ) /
54  sizeof ( uint32_t ) ];
55 };
56 
57 /** An MD4 context */
58 struct md4_context {
59  /** Amount of accumulated data */
60  size_t len;
61  /** Digest and accumulated data */
63 } __attribute__ (( packed ));
64 
65 /** MD4 context size */
66 #define MD4_CTX_SIZE sizeof ( struct md4_context )
67 
68 /** MD4 block size */
69 #define MD4_BLOCK_SIZE sizeof ( union md4_block )
70 
71 /** MD4 digest size */
72 #define MD4_DIGEST_SIZE sizeof ( struct md4_digest )
73 
74 extern struct digest_algorithm md4_algorithm;
75 
76 #endif /* _IPXE_MD4_H */
struct md4_digest_data dd
Digest and data block.
Definition: md4.h:51
unsigned long long uint64_t
Definition: stdint.h:13
Cryptographic API.
struct digest_algorithm md4_algorithm
MD4 algorithm.
Definition: md4.c:261
union md4_digest_data_dwords __attribute__
uint8_t pad[56]
Padding.
Definition: md4.h:30
uint32_t h[4]
Hash output.
Definition: md4.h:18
union md4_block data
Accumulated data.
Definition: md4.h:45
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
size_t len
Amount of accumulated data.
Definition: md4.h:60
An MD4 context.
Definition: md4.h:58
An MD4 data block.
Definition: md4.h:22
union md4_digest_data_dwords ddd
Digest and accumulated data.
Definition: md4.h:62
An MD4 digest.
Definition: md4.h:16
unsigned char uint8_t
Definition: stdint.h:10
unsigned int uint32_t
Definition: stdint.h:12
uint64_t len
Length in bits.
Definition: md4.h:32
MD4 digest and data block.
Definition: md4.h:49
MD4 digest and data block.
Definition: md4.h:41
A message digest algorithm.
Definition: crypto.h:17
unsigned long int dword
Definition: smc9000.h:40
struct md4_digest digest
Digest of data already processed.
Definition: md4.h:43