Commit 71faf0fa authored by Geoff Simmons's avatar Geoff Simmons

test the digest object with SHA384

parent d85a6100
Pipeline #54 skipped
...@@ -10,29 +10,34 @@ varnish v1 -vcl { ...@@ -10,29 +10,34 @@ varnish v1 -vcl {
backend b { .host = "${bad_ip}"; } backend b { .host = "${bad_ip}"; }
sub vcl_init { sub vcl_init {
# RFC4231 test cases new a = blobcode.blob(IDENTITY, "a");
new k1 = blobcode.blob(HEX, new msg = blobcode.blob(IDENTITY, "message");
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"); new alphalc = blobcode.blob(IDENTITY,
new rfc4231t1 = blobdigest.hmac(SHA384, k1.get()); "abcdefghijklmnopqrstuvwxyz");
new empty = blobcode.blob(IDENTITY, "");
new k2 = blobcode.blob(IDENTITY, "Jefe"); new alphauc = blobcode.blob(IDENTITY,
new rfc4231t2 = blobdigest.hmac(SHA384, k2.get()); "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
new digits = blobcode.blob(IDENTITY, "1234567890");
new k3 = blobcode.blob(HEX,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
new rfc4231t3 = blobdigest.hmac(SHA384, k3.get());
new k4 = blobcode.blob(HEX,
"0102030405060708090a0b0c0d0e0f10111213141516171819");
new rfc4231t4 = blobdigest.hmac(SHA384, k4.get());
new k5 = blobcode.blob(HEX, # Byte values 0 to 63, 64 to 127, etc up to 255
"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c"); new b0to63 = blobcode.blob(BASE64,
new rfc4231t5 = blobdigest.hmac(SHA384, k5.get()); "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==");
new b64to127 = blobcode.blob(BASE64,
"QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+fw==");
new b128to191 = blobcode.blob(BASE64,
"gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+vw==");
new b192to255 = blobcode.blob(BASE64,
"wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==");
new k6 = blobcode.blob(HEX, new d1 = blobdigest.digest(SHA384);
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); new d2 = blobdigest.digest(SHA384);
new rfc4231t6 = blobdigest.hmac(SHA384, k6.get()); new d3 = blobdigest.digest(SHA384, a.get());
new d4 = blobdigest.digest(SHA384, msg.get());
new d5 = blobdigest.digest(SHA384, alphalc.get());
new d6 = blobdigest.digest(SHA384, empty.get());
new d7 = blobdigest.digest(SHA384, alphauc.get());
new d8 = blobdigest.digest(SHA384, digits.get());
new d11 = blobdigest.digest(SHA384, b0to63.get());
} }
sub vcl_recv { sub vcl_recv {
...@@ -40,49 +45,217 @@ varnish v1 -vcl { ...@@ -40,49 +45,217 @@ varnish v1 -vcl {
} }
sub vcl_synth { sub vcl_synth {
set resp.http.empty if (!d1.update(empty.get())) {
set resp.status = 500;
return(deliver);
}
set resp.http.empty = blobcode.encode(HEXUC, d1.final());
if (!d2.update(a.get())) {
set resp.status = 500;
return(deliver);
}
set resp.http.a = blobcode.encode(HEXUC, d2.final());
if (!d3.update(blobcode.decode(IDENTITY, "b"))) {
set resp.status = 500;
return(deliver);
}
if (!d3.update(blobcode.decode(IDENTITY, "c"))) {
set resp.status = 500;
return(deliver);
}
set resp.http.abc = blobcode.encode(HEXUC, d3.final());
if (!d4.update(blobcode.decode(IDENTITY, " "))) {
set resp.status = 500;
return(deliver);
}
if (!d4.update(blobcode.decode(IDENTITY, "digest"))) {
set resp.status = 500;
return(deliver);
}
set resp.http.msgdigest = blobcode.encode(HEXUC, d4.final());
if (!d5.update(blobcode.decode(IDENTITY, ""))) {
set resp.status = 500;
return(deliver);
}
set resp.http.alphalc = blobcode.encode(HEXUC, d5.final());
if (!d6.update(blobcode.decode(IDENTITY,
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"))) {
set resp.status = 500;
return(deliver);
}
set resp.http.alphasoup = blobcode.encode(HEXUC, d6.final());
if (!d7.update(alphalc.get())) {
set resp.status = 500;
return(deliver);
}
if (!d7.update(blobcode.decode(IDENTITY, "0123456789"))) {
set resp.status = 500;
return(deliver);
}
set resp.http.alphanum = blobcode.encode(HEXUC, d7.final());
if (!d8.update(digits.get())) {
set resp.status = 500;
return(deliver);
}
if (!d8.update(digits.get())) {
set resp.status = 500;
return(deliver);
}
if (!d8.update(digits.get())) {
set resp.status = 500;
return(deliver);
}
if (!d8.update(digits.get())) {
set resp.status = 500;
return(deliver);
}
if (!d8.update(digits.get())) {
set resp.status = 500;
return(deliver);
}
if (!d8.update(digits.get())) {
set resp.status = 500;
return(deliver);
}
if (!d8.update(digits.get())) {
set resp.status = 500;
return(deliver);
}
set resp.http.digits = blobcode.encode(HEXUC, d8.final());
if (!d11.update(b64to127.get())) {
set resp.status = 500;
return(deliver);
}
if (!d11.update(b128to191.get())) {
set resp.status = 500;
return(deliver);
}
if (!d11.update(b192to255.get())) {
set resp.status = 500;
return(deliver);
}
set resp.http.allbytes = blobcode.encode(HEXLC, d11.final());
# Tests for the hash() function
set resp.http.emptyf
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, ""))); blobcode.decode(IDENTITY, "")));
set resp.http.a set resp.http.af
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, "a"))); blobcode.decode(IDENTITY, "a")));
set resp.http.abc set resp.http.abcf
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, "abc"))); blobcode.decode(IDENTITY, "abc")));
set resp.http.msgdigest set resp.http.msgdigestf
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, blobcode.decode(IDENTITY,
"message digest"))); "message digest")));
set resp.http.alphalc set resp.http.alphalcf
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, blobcode.decode(IDENTITY,
"abcdefghijklmnopqrstuvwxyz"))); "abcdefghijklmnopqrstuvwxyz")));
set resp.http.alphasoup set resp.http.alphasoupf
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, blobcode.decode(IDENTITY,
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"))); "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")));
set resp.http.alphanum set resp.http.alphanumf
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, blobcode.decode(IDENTITY,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"))); "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")));
set resp.http.digits set resp.http.digitsf
= blobcode.encode(HEXUC, blobdigest.hash(SHA384, = blobcode.encode(HEXUC, blobdigest.hash(SHA384,
blobcode.decode(IDENTITY, blobcode.decode(IDENTITY,
"12345678901234567890123456789012345678901234567890123456789012345678901234567890"))); "12345678901234567890123456789012345678901234567890123456789012345678901234567890")));
# all 256 byte values in ascending, big-endian order # all 256 byte values in ascending, big-endian order
set resp.http.allbytes set resp.http.allbytesf
= blobcode.encode(HEXLC, blobdigest.hash(SHA384, = blobcode.encode(HEXLC, blobdigest.hash(SHA384,
blobcode.decode(BASE64, blobcode.decode(BASE64,
"AQACAQMCBAMFBAYFBwYIBwkICgkLCgwLDQwODQ8OEA8REBIRExIUExUUFhUXFhgXGRgaGRsaHBsdHB4dHx4gHyEgIiEjIiQjJSQmJScmKCcpKCopKyosKy0sLi0vLjAvMTAyMTMyNDM1NDY1NzY4Nzk4Ojk7Ojw7PTw+PT8+QD9BQEJBQ0JEQ0VERkVHRkhHSUhKSUtKTEtNTE5NT05QT1FQUlFTUlRTVVRWVVdWWFdZWFpZW1pcW11cXl1fXmBfYWBiYWNiZGNlZGZlZ2ZoZ2loamlramxrbWxubW9ucG9xcHJxc3J0c3V0dnV3dnh3eXh6eXt6fHt9fH59f36Afw=="))); "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==")));
}
} -start
client c1 {
txreq
rxresp
expect resp.status == 200
# from librhash
expect resp.http.empty == "38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B"
expect resp.http.a == "54A59B9F22B0B80880D8427E548B7C23ABD873486E1F035DCE9CD697E85175033CAA88E6D57BC35EFAE0B5AFD3145F31"
expect resp.http.abc == "CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED1631A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7"
expect resp.http.msgdigest == "473ED35167EC1F5D8E550368A3DB39BE54639F828868E9454C239FC8B52E3C61DBD0D8B4DE1390C256DCBB5D5FD99CD5"
expect resp.http.alphalc == "FEB67349DF3DB6F5924815D6C3DC133F091809213731FE5C7B5F4999E463479FF2877F5F2936FA63BB43784B12F3EBB4"
expect resp.http.alphasoup == "3391FDDDFC8DC7393707A65B1B4709397CF8B1D162AF05ABFE8F450DE5F36BC6B0455A8520BC4E6F5FE95B1FE3C8452B"
expect resp.http.alphanum == "1761336E3F7CBFE51DEB137F026F89E01A448E3B1FAFA64039C1464EE8732F11A5341A6F41E0C202294736ED64DB1A84"
expect resp.http.digits == "B12932B0627D1C060942F5447764155655BD4DA0C9AFA6DD9B9EF53129AF1B8FB0195996D2DE9CA0DF9D821FFEE67026"
# verified with: base64 -d | sha384sum
expect resp.http.allbytes == "ffdaebff65ed05cf400f0221c4ccfb4b2104fb6a51f87e40be6c4309386bfdec2892e9179b34632331a59592737db5c5"
# hash() function
expect resp.http.emptyf == "38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B"
expect resp.http.af == "54A59B9F22B0B80880D8427E548B7C23ABD873486E1F035DCE9CD697E85175033CAA88E6D57BC35EFAE0B5AFD3145F31"
expect resp.http.abcf == "CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED1631A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7"
expect resp.http.msgdigestf == "473ED35167EC1F5D8E550368A3DB39BE54639F828868E9454C239FC8B52E3C61DBD0D8B4DE1390C256DCBB5D5FD99CD5"
expect resp.http.alphalcf == "FEB67349DF3DB6F5924815D6C3DC133F091809213731FE5C7B5F4999E463479FF2877F5F2936FA63BB43784B12F3EBB4"
expect resp.http.alphasoupf == "3391FDDDFC8DC7393707A65B1B4709397CF8B1D162AF05ABFE8F450DE5F36BC6B0455A8520BC4E6F5FE95B1FE3C8452B"
expect resp.http.alphanumf == "1761336E3F7CBFE51DEB137F026F89E01A448E3B1FAFA64039C1464EE8732F11A5341A6F41E0C202294736ED64DB1A84"
expect resp.http.digitsf == "B12932B0627D1C060942F5447764155655BD4DA0C9AFA6DD9B9EF53129AF1B8FB0195996D2DE9CA0DF9D821FFEE67026"
expect resp.http.allbytesf == "ffdaebff65ed05cf400f0221c4ccfb4b2104fb6a51f87e40be6c4309386bfdec2892e9179b34632331a59592737db5c5"
} -run
varnish v1 -vcl {
import blobdigest from "${vmod_topbuild}/src/.libs/libvmod_blobdigest.so";
import blobcode;
backend b { .host = "${bad_ip}"; }
sub vcl_init {
# RFC4231 test cases
new k1 = blobcode.blob(HEX,
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b");
new rfc4231t1 = blobdigest.hmac(SHA384, k1.get());
new k2 = blobcode.blob(IDENTITY, "Jefe");
new rfc4231t2 = blobdigest.hmac(SHA384, k2.get());
new k3 = blobcode.blob(HEX,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
new rfc4231t3 = blobdigest.hmac(SHA384, k3.get());
new k4 = blobcode.blob(HEX,
"0102030405060708090a0b0c0d0e0f10111213141516171819");
new rfc4231t4 = blobdigest.hmac(SHA384, k4.get());
new k5 = blobcode.blob(HEX,
"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c");
new rfc4231t5 = blobdigest.hmac(SHA384, k5.get());
new k6 = blobcode.blob(HEX,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
new rfc4231t6 = blobdigest.hmac(SHA384, k6.get());
}
sub vcl_recv {
return(synth(200));
}
sub vcl_synth {
set resp.http.rfc4231t1 = blobcode.encode(HEXLC, set resp.http.rfc4231t1 = blobcode.encode(HEXLC,
rfc4231t1.hmac(blobcode.decode(IDENTITY, "Hi There"))); rfc4231t1.hmac(blobcode.decode(IDENTITY, "Hi There")));
...@@ -120,28 +293,14 @@ varnish v1 -vcl { ...@@ -120,28 +293,14 @@ varnish v1 -vcl {
= blobcode.encode(HEXLC, = blobcode.encode(HEXLC,
rfc4231t6.hmac(blobcode.decode(IDENTITY, rfc4231t6.hmac(blobcode.decode(IDENTITY,
"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."))); "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.")));
} }
} -start }
client c1 { client c1 {
txreq txreq
rxresp rxresp
expect resp.status == 200 expect resp.status == 200
# from librhash
expect resp.http.empty == "38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B"
expect resp.http.a == "54A59B9F22B0B80880D8427E548B7C23ABD873486E1F035DCE9CD697E85175033CAA88E6D57BC35EFAE0B5AFD3145F31"
expect resp.http.abc == "CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED1631A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7"
expect resp.http.msgdigest == "473ED35167EC1F5D8E550368A3DB39BE54639F828868E9454C239FC8B52E3C61DBD0D8B4DE1390C256DCBB5D5FD99CD5"
expect resp.http.alphalc == "FEB67349DF3DB6F5924815D6C3DC133F091809213731FE5C7B5F4999E463479FF2877F5F2936FA63BB43784B12F3EBB4"
expect resp.http.alphasoup == "3391FDDDFC8DC7393707A65B1B4709397CF8B1D162AF05ABFE8F450DE5F36BC6B0455A8520BC4E6F5FE95B1FE3C8452B"
expect resp.http.alphanum == "1761336E3F7CBFE51DEB137F026F89E01A448E3B1FAFA64039C1464EE8732F11A5341A6F41E0C202294736ED64DB1A84"
expect resp.http.digits == "B12932B0627D1C060942F5447764155655BD4DA0C9AFA6DD9B9EF53129AF1B8FB0195996D2DE9CA0DF9D821FFEE67026"
# verified with: base64 -d | sha384sum
expect resp.http.allbytes == "c862d8af4409db435fe6d90b3bbd7d42962a791e8d16e7c3681cecc648445b3cc3c78b31a6a0262720d5c3b4ee72a8e8"
# RFC4231 test cases # RFC4231 test cases
expect resp.http.rfc4231t1 == "afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6" expect resp.http.rfc4231t1 == "afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6"
expect resp.http.rfc4231t2 == "af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649" expect resp.http.rfc4231t2 == "af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment