iPXE
md5_sha1.c File Reference

Hybrid MD5+SHA1 hash as used by TLSv1.1 and earlier. More...

#include <ipxe/crypto.h>
#include <ipxe/rsa.h>
#include <ipxe/md5_sha1.h>

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
static void md5_sha1_init (struct digest_algorithm *digest __unused, void *ctx)
 Initialise MD5+SHA1 algorithm.
static void md5_sha1_update (struct digest_algorithm *digest __unused, void *ctx, const void *data, size_t len)
 Accumulate data with MD5+SHA1 algorithm.
static void md5_sha1_final (struct digest_algorithm *digest __unused, void *ctx, void *out)
 Generate MD5+SHA1 digest.

Variables

struct digest_algorithm md5_sha1_algorithm
 Hybrid MD5+SHA1 digest algorithm.
struct rsa_digestinfo_prefix rsa_md5_sha1_prefix __rsa_digestinfo_prefix
 RSA digestInfo prefix for MD5+SHA1 algorithm.

Detailed Description

Hybrid MD5+SHA1 hash as used by TLSv1.1 and earlier.

Definition in file md5_sha1.c.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

◆ md5_sha1_init()

void md5_sha1_init ( struct digest_algorithm *digest __unused,
void * ctx )
static

Initialise MD5+SHA1 algorithm.

Parameters
digestDigest algorithm
ctxMD5+SHA1 context

Definition at line 43 of file md5_sha1.c.

44 {
45 struct md5_sha1_context *context = ctx;
46
47 digest_init ( &md5_algorithm, context->md5 );
48 digest_init ( &sha1_algorithm, context->sha1 );
49}
struct golan_eq_context ctx
Definition CIB_PRM.h:0
static void digest_init(struct digest_algorithm *digest, void *ctx)
Definition crypto.h:294
struct digest_algorithm md5_algorithm
struct digest_algorithm sha1_algorithm
An MD5+SHA1 context.
Definition md5_sha1.h:19
uint8_t sha1[SHA1_CTX_SIZE]
SHA-1 context.
Definition md5_sha1.h:23
uint8_t md5[MD5_CTX_SIZE]
MD5 context.
Definition md5_sha1.h:21

References __unused, ctx, digest_init(), md5_sha1_context::md5, md5_algorithm, md5_sha1_context::sha1, and sha1_algorithm.

◆ md5_sha1_update()

void md5_sha1_update ( struct digest_algorithm *digest __unused,
void * ctx,
const void * data,
size_t len )
static

Accumulate data with MD5+SHA1 algorithm.

Parameters
digestDigest algorithm
ctxMD5+SHA1 context
dataData
lenLength of data

Definition at line 59 of file md5_sha1.c.

60 {
61 struct md5_sha1_context *context = ctx;
62
63 digest_update ( &md5_algorithm, context->md5, data, len );
64 digest_update ( &sha1_algorithm, context->sha1, data, len );
65}
ring len
Length.
Definition dwmac.h:226
uint8_t data[48]
Additional event data.
Definition ena.h:11
static void digest_update(struct digest_algorithm *digest, void *ctx, const void *data, size_t len)
Definition crypto.h:299

References __unused, ctx, data, digest_update(), len, md5_sha1_context::md5, md5_algorithm, md5_sha1_context::sha1, and sha1_algorithm.

◆ md5_sha1_final()

void md5_sha1_final ( struct digest_algorithm *digest __unused,
void * ctx,
void * out )
static

Generate MD5+SHA1 digest.

Parameters
digestDigest algorithm
ctxMD5+SHA1 context
outOutput buffer

Definition at line 74 of file md5_sha1.c.

75 {
76 struct md5_sha1_context *context = ctx;
77 struct md5_sha1_digest *output = out;
78
79 digest_final ( &md5_algorithm, context->md5, output->md5 );
80 digest_final ( &sha1_algorithm, context->sha1, output->sha1 );
81}
__be32 out[4]
Definition CIB_PRM.h:8
static void digest_final(struct digest_algorithm *digest, void *ctx, void *out)
Definition crypto.h:305
An MD5+SHA1 digest.
Definition md5_sha1.h:30

References __unused, ctx, digest_final(), md5_sha1_context::md5, md5_algorithm, out, md5_sha1_context::sha1, and sha1_algorithm.

Variable Documentation

◆ md5_sha1_algorithm

struct digest_algorithm md5_sha1_algorithm
Initial value:
= {
.name = "md5+sha1",
.ctxsize = sizeof ( struct md5_sha1_context ),
.blocksize = sizeof ( union md5_sha1_block ),
.digestsize = sizeof ( struct md5_sha1_digest ),
.init = md5_sha1_init,
.update = md5_sha1_update,
.final = md5_sha1_final,
}
static void md5_sha1_init(struct digest_algorithm *digest __unused, void *ctx)
Initialise MD5+SHA1 algorithm.
Definition md5_sha1.c:43
static void md5_sha1_update(struct digest_algorithm *digest __unused, void *ctx, const void *data, size_t len)
Accumulate data with MD5+SHA1 algorithm.
Definition md5_sha1.c:59
static void md5_sha1_final(struct digest_algorithm *digest __unused, void *ctx, void *out)
Generate MD5+SHA1 digest.
Definition md5_sha1.c:74
uint32_t digestsize
Digest size (i.e.
Definition pccrr.h:1
An MD5+SHA1 data block.
Definition md5_sha1.h:41

Hybrid MD5+SHA1 digest algorithm.

Definition at line 84 of file md5_sha1.c.

84 {
85 .name = "md5+sha1",
86 .ctxsize = sizeof ( struct md5_sha1_context ),
87 .blocksize = sizeof ( union md5_sha1_block ),
88 .digestsize = sizeof ( struct md5_sha1_digest ),
89 .init = md5_sha1_init,
90 .update = md5_sha1_update,
91 .final = md5_sha1_final,
92};

Referenced by tls_generate_resumption_master(), tls_select_cipher(), tls_set_kdf_master(), and tls_verify_dh_params().

◆ __rsa_digestinfo_prefix

struct rsa_digestinfo_prefix rsa_md5_sha1_prefix __rsa_digestinfo_prefix
Initial value:
= {
.digest = &md5_sha1_algorithm,
.data = NULL,
.len = 0,
}
#define NULL
NULL pointer (VOID *).
Definition Base.h:321
struct digest_algorithm md5_sha1_algorithm
Hybrid MD5+SHA1 digest algorithm.
Definition md5_sha1.c:84

RSA digestInfo prefix for MD5+SHA1 algorithm.

Definition at line 95 of file md5_sha1.c.

95 {
96 .digest = &md5_sha1_algorithm,
97 .data = NULL, /* MD5+SHA1 signatures have no digestInfo */
98 .len = 0,
99};