MD5_BLOCK_LENGTH
MD5_BLOCK_LENGTH,
padlen = MD5_BLOCK_LENGTH -
((ctx->count >> 3) & (MD5_BLOCK_LENGTH - 1));
padlen += MD5_BLOCK_LENGTH;
MD5Transform(u_int32_t state[4], const u_int8_t block[MD5_BLOCK_LENGTH])
u_int32_t a, b, c, d, in[MD5_BLOCK_LENGTH / 4];
for (a = 0; a < MD5_BLOCK_LENGTH / 4; a++) {
static u_int8_t PADDING[MD5_BLOCK_LENGTH] = {
have = (size_t)((ctx->count >> 3) & (MD5_BLOCK_LENGTH - 1));
need = MD5_BLOCK_LENGTH - have;
while (len >= MD5_BLOCK_LENGTH) {
input += MD5_BLOCK_LENGTH;
len -= MD5_BLOCK_LENGTH;
u_int8_t buffer[MD5_BLOCK_LENGTH]; /* input buffer */
void MD5Transform(u_int32_t [4], const u_int8_t [MD5_BLOCK_LENGTH])
__attribute__((__bounded__(__minbytes__,2,MD5_BLOCK_LENGTH)));
assert(ctx->count[0] % MD5_BLOCK_LENGTH == 0);
while (len >= MD5_BLOCK_LENGTH) {
p += MD5_BLOCK_LENGTH;
len -= MD5_BLOCK_LENGTH;
num = ctx->count[0] % MD5_BLOCK_LENGTH;
unsigned int n = MD5_BLOCK_LENGTH - num;
if (num == MD5_BLOCK_LENGTH)
md5block(ctx, (void *)ctx->buffer, MD5_BLOCK_LENGTH);
if (len >= MD5_BLOCK_LENGTH) {
unsigned n = len & ~(unsigned)(MD5_BLOCK_LENGTH - 1);
unsigned char tmp[MD5_BLOCK_LENGTH + sizeof(uint64_t)] = {0x80, 0};
MD5Update(&ctx, in, MD5_BLOCK_LENGTH);