Rev 87178 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
require("tools")## -- MD5 test vectors## RFC 1321 A.5:stopifnot(identical(md5sum(bytes=raw()),"d41d8cd98f00b204e9800998ecf8427e"))stopifnot(identical(md5sum(bytes=charToRaw("a")),"0cc175b9c0f1b6a831c399e269772661"))stopifnot(identical(md5sum(bytes=charToRaw("abc")),"900150983cd24fb0d6963f7d28e17f72"))## not official, but the FIPS180-2 vectorsstopifnot(identical(md5sum(bytes=rep(charToRaw("a"),1e6)),"7707d6ae4e027c70eea2a935c2296f21"))stopifnot(identical(md5sum(bytes=charToRaw("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")),"8215ef0796a20bcaaae116d3876c664a"))## -- SHA256 test vectorsstopifnot(identical(sha256sum(bytes=raw()),"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))## FIPS180-2 Appendix B.3 test vectorsstopifnot(identical(sha256sum(bytes=charToRaw("abc")),"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"))stopifnot(identical(sha256sum(bytes=charToRaw("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")),"248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"))stopifnot(identical(sha256sum(bytes=rep(charToRaw("a"),1e6)),"cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0"))## let's see if there are hidden HMAC functions - if so, test themif (!is.null(environment(tools::sha256sum)[["hmac"]])) {## [[ we have not exported HMAC functions yet ]]hmac.md5 <- tools:::hmac.md5hmac.sha256 <- tools:::hmac.sha256## -- HMAC test vectors## RFC 2202 HMAC-MD5stopifnot(identical(hmac.md5(rep(as.raw(0xb),16), charToRaw("Hi There")),"9294727a3638bb1c13f48ef8158bfc9d"))stopifnot(identical(hmac.md5(charToRaw("Jefe"), charToRaw("what do ya want for nothing?")),"750c783e6ab0b503eaa86e310a5db738"))stopifnot(identical(hmac.md5(rep(as.raw(0xaa),16), rep(as.raw(0xdd), 50)),"56be34521d144c88dbb8c733f0e8b3f6"))## skipping test_case = 4,5stopifnot(identical(hmac.md5(rep(as.raw(0xaa),80), charToRaw("Test Using Larger Than Block-Size Key - Hash Key First")),"6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd"))stopifnot(identical(hmac.md5(rep(as.raw(0xaa),80), charToRaw("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data")),"6f630fad67cda0ee1fb1f562db3aa53e"))## RFC 4231 HMAC-SHA256stopifnot(identical(hmac.sha256(rep(as.raw(0xb),20), charToRaw("Hi There")),"b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7"))stopifnot(identical(hmac.sha256(charToRaw("Jefe"), charToRaw("what do ya want for nothing?")),"5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843"))stopifnot(identical(hmac.sha256(rep(as.raw(0xaa),20), rep(as.raw(0xdd), 50)),"773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe"))## skipping test_case = 4,5 (we don't truncate - left to the user)stopifnot(identical(hmac.sha256(rep(as.raw(0xaa),131), charToRaw("Test Using Larger Than Block-Size Key - Hash Key First")),"60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54"))stopifnot(identical(hmac.sha256(rep(as.raw(0xaa),131),charToRaw("This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.")),"9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2"))}