mirror of
https://github.com/ipxe/ipxe
synced 2025-12-20 03:55:46 +03:00
[crypto] Add MD4 message digest algorithm
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -161,6 +161,12 @@ struct asn1_builder_header {
|
||||
ASN1_OID_TRIPLE ( 113549 ), ASN1_OID_SINGLE ( 1 ), \
|
||||
ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 14 )
|
||||
|
||||
/** ASN.1 OID for id-md4 (1.2.840.113549.2.4) */
|
||||
#define ASN1_OID_MD4 \
|
||||
ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ), \
|
||||
ASN1_OID_TRIPLE ( 113549 ), ASN1_OID_SINGLE ( 2 ), \
|
||||
ASN1_OID_SINGLE ( 4 )
|
||||
|
||||
/** ASN.1 OID for id-md5 (1.2.840.113549.2.5) */
|
||||
#define ASN1_OID_MD5 \
|
||||
ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ), \
|
||||
|
||||
73
src/include/ipxe/md4.h
Normal file
73
src/include/ipxe/md4.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#ifndef _IPXE_MD4_H
|
||||
#define _IPXE_MD4_H
|
||||
|
||||
/** @file
|
||||
*
|
||||
* MD4 algorithm
|
||||
*
|
||||
*/
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
|
||||
#include <stdint.h>
|
||||
#include <ipxe/crypto.h>
|
||||
|
||||
/** An MD4 digest */
|
||||
struct md4_digest {
|
||||
/** Hash output */
|
||||
uint32_t h[4];
|
||||
};
|
||||
|
||||
/** An MD4 data block */
|
||||
union md4_block {
|
||||
/** Raw bytes */
|
||||
uint8_t byte[64];
|
||||
/** Raw dwords */
|
||||
uint32_t dword[16];
|
||||
/** Final block structure */
|
||||
struct {
|
||||
/** Padding */
|
||||
uint8_t pad[56];
|
||||
/** Length in bits */
|
||||
uint64_t len;
|
||||
} final;
|
||||
};
|
||||
|
||||
/** MD4 digest and data block
|
||||
*
|
||||
* The order of fields within this structure is designed to minimise
|
||||
* code size.
|
||||
*/
|
||||
struct md4_digest_data {
|
||||
/** Digest of data already processed */
|
||||
struct md4_digest digest;
|
||||
/** Accumulated data */
|
||||
union md4_block data;
|
||||
} __attribute__ (( packed ));
|
||||
|
||||
/** MD4 digest and data block */
|
||||
union md4_digest_data_dwords {
|
||||
/** Digest and data block */
|
||||
struct md4_digest_data dd;
|
||||
/** Raw dwords */
|
||||
uint32_t dword[ sizeof ( struct md4_digest_data ) /
|
||||
sizeof ( uint32_t ) ];
|
||||
};
|
||||
|
||||
/** An MD4 context */
|
||||
struct md4_context {
|
||||
/** Amount of accumulated data */
|
||||
size_t len;
|
||||
/** Digest and accumulated data */
|
||||
union md4_digest_data_dwords ddd;
|
||||
} __attribute__ (( packed ));
|
||||
|
||||
/** MD4 context size */
|
||||
#define MD4_CTX_SIZE sizeof ( struct md4_context )
|
||||
|
||||
/** MD4 digest size */
|
||||
#define MD4_DIGEST_SIZE sizeof ( struct md4_digest )
|
||||
|
||||
extern struct digest_algorithm md4_algorithm;
|
||||
|
||||
#endif /* _IPXE_MD4_H */
|
||||
Reference in New Issue
Block a user