On 2013-06-27, at 11:49, "Dearlove, Christopher (UK)" 
<chris.dearl...@baesystems.com> wrote:

> RFC 6234 contains, embedded in it, code to implement various functions, 
> including SHA-2.
> 
> Extracting that code from the RFC is not a clean process. In addition the 
> code must have existed unembedded before being embedded.
> 
> Is that code available from the IETF or elsewhere?
> 
> (I have tried some approaches to finding such code before posting here, but 
> none successful.)

Turns out that extracting the code from the RFC is only twenty minutes' work. 
Probably faster just to do it than to talk about it. If you'd like a copy of 
the files I extracted from the RFC text, I can easily send you a tarball.

In general I think that maintaining code repositories is non-trivial, and also 
has been known (especially with respect to crypto/hash algorithms) to run into 
export licensing issues. Maintaining an archives of RFCs is already a core 
competency for the IETF, and (at least in some cases) exporting text is less 
problematic than exporting code.


Joe

[krill:~]% mkdir 6234
[krill:~]% cd 6234
[krill:~/6234]% curl -O 'http://tools.ietf.org/rfc/rfc6234.txt'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  231k  100  231k    0     0   190k      0  0:00:01  0:00:01 --:--:--  190k
[krill:~/6234]% vi rfc6234.txt 
[krill:~/6234]% ls
hkdf.c                  sha.h                   stdint-example.h
hmac.c                  sha1.c                  test-driver.c
rfc6234.txt             sha224-256.c            usha.c
sha-private.h           sha384-512.c
[krill:~/6234]% vi *.h *.c
10 files to edit
[krill:~/6234]% date
Thu 27 Jun 2013 13:14:53 EDT
[krill:~/6234]% 
[krill:~/6234]% cc -c hmac.c
[krill:~/6234]% cc -c sha1.c
[krill:~/6234]% cc -c sha224-256.c
[krill:~/6234]% cc -c sha384-512.c 
[krill:~/6234]% cc -c usha.c
[krill:~/6234]% cc -c test-driver.c
[krill:~/6234]% ls
hkdf.c                  sha.h                   sha384-512.o
hkdf.o                  sha1.c                  stdint-example.h
hmac.c                  sha1.o                  test-driver.c
hmac.o                  sha224-256.c            test-driver.o
rfc6234.txt             sha224-256.o            usha.c
sha-private.h           sha384-512.c            usha.o
[krill:~/6234]% cc -o test-driver *.o
[krill:~/6234]% ./test-driver| egrep '(PASS|FAIL)'
SHA1 sha standard test 1: PASSED
SHA1 sha standard test 2: PASSED
SHA1 sha standard test 3: PASSED
SHA1 sha standard test 4: PASSED
SHA1 sha standard test 5: PASSED
SHA1 sha standard test 6: PASSED
SHA1 sha standard test 7: PASSED
SHA1 sha standard test 8: PASSED
SHA1 sha standard test 9: PASSED
SHA1 sha standard test 10: PASSED
SHA1 random test 0: PASSED
SHA1 random test 1: PASSED
SHA1 random test 2: PASSED
SHA1 random test 3: PASSED
SHA224 sha standard test 1: PASSED
SHA224 sha standard test 2: PASSED
SHA224 sha standard test 3: PASSED
SHA224 sha standard test 4: PASSED
SHA224 sha standard test 5: PASSED
SHA224 sha standard test 6: PASSED
SHA224 sha standard test 7: PASSED
SHA224 sha standard test 8: PASSED
SHA224 sha standard test 9: PASSED
SHA224 sha standard test 10: PASSED
SHA224 random test 0: PASSED
SHA224 random test 1: PASSED
SHA224 random test 2: PASSED
SHA224 random test 3: PASSED
SHA256 sha standard test 1: PASSED
SHA256 sha standard test 2: PASSED
SHA256 sha standard test 3: PASSED
SHA256 sha standard test 4: PASSED
SHA256 sha standard test 5: PASSED
SHA256 sha standard test 6: PASSED
SHA256 sha standard test 7: PASSED
SHA256 sha standard test 8: PASSED
SHA256 sha standard test 9: PASSED
SHA256 sha standard test 10: PASSED
SHA256 random test 0: PASSED
SHA256 random test 1: PASSED
SHA256 random test 2: PASSED
SHA256 random test 3: PASSED
SHA384 sha standard test 1: PASSED
SHA384 sha standard test 2: PASSED
SHA384 sha standard test 3: PASSED
SHA384 sha standard test 4: PASSED
SHA384 sha standard test 5: PASSED
SHA384 sha standard test 6: PASSED
SHA384 sha standard test 7: PASSED
SHA384 sha standard test 8: PASSED
SHA384 sha standard test 9: PASSED
SHA384 sha standard test 10: PASSED
SHA384 random test 0: PASSED
SHA384 random test 1: PASSED
SHA384 random test 2: PASSED
SHA384 random test 3: PASSED
SHA512 sha standard test 1: PASSED
SHA512 sha standard test 2: PASSED
SHA512 sha standard test 3: PASSED
SHA512 sha standard test 4: PASSED
SHA512 sha standard test 5: PASSED
SHA512 sha standard test 6: PASSED
SHA512 sha standard test 7: PASSED
SHA512 sha standard test 8: PASSED
SHA512 sha standard test 9: PASSED
SHA512 sha standard test 10: PASSED
SHA512 random test 0: PASSED
SHA512 random test 1: PASSED
SHA512 random test 2: PASSED
SHA512 random test 3: PASSED
[krill:~/6234]% 

Reply via email to