1
/* sha256.c - SHA256 hash function
2
* Copyright (C) 2003 Free Software Foundation, Inc.
1
/* sha256.c - SHA224 and SHA256 hash functions
2
* Copyright (C) 2003, 2006 Free Software Foundation, Inc.
4
4
* Please see below for more legal information!
25
25
/* Test vectors from FIPS-180-2:
29
* 23097D22 3405D822 8642A477 BDA255B3 2AADBCE4 BDA0B3F7 E36C9DA7
28
31
* BA7816BF 8F01CFEA 414140DE 5DAE2223 B00361A3 96177A9C B410FF61 F20015AD
30
33
* "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
35
* 75388B16 512776CC 5DBA5DA1 FD890150 B0C6455C B4F58B19 52522525
31
37
* 248D6A61 D20638B8 E5C02693 0C3E6039 A33CE459 64FF2167 F6ECEDD4 19DB06C1
41
* 20794655 980C91D8 BBB4C1EA 97618A4B F03F4258 1948B2EE 4EE7AD67
34
43
* CDC76E5C 9914FB92 81A1C7E2 84D73E67 F1809A48 A497200E 046D39CC C7112CD0
207
232
* returns the digest.
208
233
* The handle is prepared for a new cycle, but adding bytes to the
209
234
* handle will the destroy the returned buffer.
210
* Returns: 32 bytes representing the digest.
235
* Returns: 32 bytes representing the digest. When used for sha224,
236
* we take the leftmost 28 of those bytes.
348
/* SHA224 is really a truncated SHA256 with a different
351
sha224_get_info( int algo, size_t *contextsize,
352
byte **r_asnoid, int *r_asnlen, int *r_mdlen,
353
void (**r_init)( void *c ),
354
void (**r_write)( void *c, byte *buf, size_t nbytes ),
355
void (**r_final)( void *c ),
356
byte *(**r_read)( void *c )
359
static byte asn[] = /* Object ID is 2.16.840.1.101.3.4.2.4 */
361
0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
362
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, 0x05,
369
*contextsize = sizeof(SHA256_CONTEXT);
371
*r_asnlen = DIM(asn);
373
*(void (**)(SHA256_CONTEXT *))r_init = sha224_init;
374
*(void (**)(SHA256_CONTEXT *, byte*, size_t))r_write = sha256_write;
375
*(void (**)(SHA256_CONTEXT *))r_final = sha256_final;
376
*(byte *(**)(SHA256_CONTEXT *))r_read = sha256_read;