Commit d49ce197 authored by Geoff Simmons's avatar Geoff Simmons

test the digest object with SHA1

parent b904aca9
Pipeline #51 skipped
......@@ -10,29 +10,43 @@ varnish v1 -vcl {
backend b { .host = "${bad_ip}"; }
sub vcl_init {
# RFC2202 test cases
new k1 = blobcode.blob(HEX,
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b");
new rfc2202t1 = blobdigest.hmac(SHA1, k1.get());
new k2 = blobcode.blob(IDENTITY, "Jefe");
new rfc2202t2 = blobdigest.hmac(SHA1, k2.get());
new k3 = blobcode.blob(HEX,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
new rfc2202t3 = blobdigest.hmac(SHA1, k3.get());
new k4 = blobcode.blob(HEX,
"0102030405060708090a0b0c0d0e0f10111213141516171819");
new rfc2202t4 = blobdigest.hmac(SHA1, k4.get());
new k5 = blobcode.blob(HEX,
"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c");
new rfc2202t5 = blobdigest.hmac(SHA1, k5.get());
new k6 = blobcode.blob(HEX,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
new rfc2202t6 = blobdigest.hmac(SHA1, k6.get());
new a = blobcode.blob(IDENTITY, "a");
new msg = blobcode.blob(IDENTITY, "message");
new alphalc = blobcode.blob(IDENTITY,
"abcdefghijklmnopqrstuvwxyz");
new empty = blobcode.blob(IDENTITY, "");
new alphauc = blobcode.blob(IDENTITY,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
new digits = blobcode.blob(IDENTITY, "1234567890");
new pangram =
blobcode.blob(IDENTITY,
"The quick brown fox jumps over the lazy dog");
new pangramcog =
blobcode.blob(IDENTITY,
"The quick brown fox jumps over the lazy cog");
# Byte values 0 to 63, 64 to 127, etc up to 255
new b0to63 = blobcode.blob(BASE64,
"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 d1 = blobdigest.digest(SHA1);
new d2 = blobdigest.digest(SHA1);
new d3 = blobdigest.digest(SHA1, a.get());
new d4 = blobdigest.digest(SHA1, msg.get());
new d5 = blobdigest.digest(SHA1, alphalc.get());
new d6 = blobdigest.digest(SHA1, empty.get());
new d7 = blobdigest.digest(SHA1, alphauc.get());
new d8 = blobdigest.digest(SHA1, digits.get());
new d9 = blobdigest.digest(SHA1, pangram.get());
new d10 = blobdigest.digest(SHA1, pangram.get());
new d11 = blobdigest.digest(SHA1, b0to63.get());
new d12 = blobdigest.digest(SHA1, pangramcog.get());
}
sub vcl_recv {
......@@ -40,68 +54,260 @@ varnish v1 -vcl {
}
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());
set resp.http.emptyb64 = blobcode.encode(BASE64, 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());
set resp.http.pangram = blobcode.encode(HEXUC, d9.final());
set resp.http.pangramb64 = blobcode.encode(BASE64, d9.final());
if (!d10.update(blobcode.decode(IDENTITY, "."))) {
set resp.status = 500;
return(deliver);
}
set resp.http.pangramperiod = blobcode.encode(HEXLC,
d10.final());
set resp.http.pangramcog = blobcode.encode(HEXLC, d12.final());
set resp.http.pangramcogb64 = blobcode.encode(BASE64,
d12.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(SHA1,
blobcode.decode(IDENTITY, "")));
set resp.http.emptyb64
set resp.http.emptyb64f
= blobcode.encode(BASE64, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY, "")));
set resp.http.a
set resp.http.af
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY, "a")));
set resp.http.abc
set resp.http.abcf
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY, "abc")));
set resp.http.msgdigest
set resp.http.msgdigestf
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"message digest")));
set resp.http.alphasoup
set resp.http.alphasoupf
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")));
set resp.http.alphanum
set resp.http.alphanumf
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")));
set resp.http.digits
set resp.http.digitsf
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"12345678901234567890123456789012345678901234567890123456789012345678901234567890")));
set resp.http.pangram
set resp.http.pangramf
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"The quick brown fox jumps over the lazy dog")));
set resp.http.pangramcog
set resp.http.pangramcogf
= blobcode.encode(HEXLC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"The quick brown fox jumps over the lazy cog")));
set resp.http.pangramb64
set resp.http.pangramb64f
= blobcode.encode(BASE64, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"The quick brown fox jumps over the lazy dog")));
set resp.http.pangramcogb64
set resp.http.pangramcogb64f
= blobcode.encode(BASE64, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"The quick brown fox jumps over the lazy cog")));
# all 256 byte values in ascending, big-endian order
set resp.http.allbytes
set resp.http.allbytesf
= blobcode.encode(HEXLC, blobdigest.hash(SHA1,
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 == "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"
expect resp.http.a == "86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8"
expect resp.http.abc == "A9993E364706816ABA3E25717850C26C9CD0D89D"
expect resp.http.msgdigest == "C12252CEDA8BE8994D5FA0290A47231C1D16AAE3"
expect resp.http.pangram == "2FD4E1C67A2D28FCED849EE1BB76E7391B93EB12"
expect resp.http.alphanum == "761C457BF73B14D27E9E9265C46F4B4DDA11F940"
expect resp.http.digits == "50ABF5706A150990A08B2C5EA40FA0E585554732"
# from Wikipedia
expect resp.http.emptyb64 == "2jmj7l5rSw0yVb/vlWAYkK/YBwk="
expect resp.http.pangramcog == "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3"
expect resp.http.pangramb64 == "L9ThxnotKPzthJ7hu3bnORuT6xI="
expect resp.http.pangramcogb64 == "3p8sf9JeGzr60+haC9F9mxANtLM="
# verified with: base64 -d | sha1sum
expect resp.http.allbytes == "4916d6bdb7f78e6803698cab32d1586ea457dfc8"
# hash() function
expect resp.http.emptyf == "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"
expect resp.http.af == "86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8"
expect resp.http.abcf == "A9993E364706816ABA3E25717850C26C9CD0D89D"
expect resp.http.msgdigestf == "C12252CEDA8BE8994D5FA0290A47231C1D16AAE3"
expect resp.http.pangramf == "2FD4E1C67A2D28FCED849EE1BB76E7391B93EB12"
expect resp.http.alphanumf == "761C457BF73B14D27E9E9265C46F4B4DDA11F940"
expect resp.http.digitsf == "50ABF5706A150990A08B2C5EA40FA0E585554732"
expect resp.http.emptyb64f == "2jmj7l5rSw0yVb/vlWAYkK/YBwk="
expect resp.http.pangramcogf == "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3"
expect resp.http.pangramb64f == "L9ThxnotKPzthJ7hu3bnORuT6xI="
expect resp.http.pangramcogb64f == "3p8sf9JeGzr60+haC9F9mxANtLM="
expect resp.http.allbytesf == "4916d6bdb7f78e6803698cab32d1586ea457dfc8"
} -run
varnish v1 -vcl {
import blobdigest from "${vmod_topbuild}/src/.libs/libvmod_blobdigest.so";
import blobcode;
backend b { .host = "${bad_ip}"; }
sub vcl_init {
# RFC2202 test cases
new k1 = blobcode.blob(HEX,
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b");
new rfc2202t1 = blobdigest.hmac(SHA1, k1.get());
new k2 = blobcode.blob(IDENTITY, "Jefe");
new rfc2202t2 = blobdigest.hmac(SHA1, k2.get());
new k3 = blobcode.blob(HEX,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
new rfc2202t3 = blobdigest.hmac(SHA1, k3.get());
new k4 = blobcode.blob(HEX,
"0102030405060708090a0b0c0d0e0f10111213141516171819");
new rfc2202t4 = blobdigest.hmac(SHA1, k4.get());
new k5 = blobcode.blob(HEX,
"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c");
new rfc2202t5 = blobdigest.hmac(SHA1, k5.get());
new k6 = blobcode.blob(HEX,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
new rfc2202t6 = blobdigest.hmac(SHA1, k6.get());
}
sub vcl_recv {
return(synth(200));
}
sub vcl_synth {
set resp.http.rfc2202t1 = blobcode.encode(HEXLC,
rfc2202t1.hmac(blobcode.decode(IDENTITY, "Hi There")));
......@@ -141,31 +347,13 @@ varnish v1 -vcl {
"Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data")));
}
} -start
}
client c1 {
txreq
rxresp
expect resp.status == 200
# from librhash
expect resp.http.empty == "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"
expect resp.http.a == "86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8"
expect resp.http.abc == "A9993E364706816ABA3E25717850C26C9CD0D89D"
expect resp.http.msgdigest == "C12252CEDA8BE8994D5FA0290A47231C1D16AAE3"
expect resp.http.pangram == "2FD4E1C67A2D28FCED849EE1BB76E7391B93EB12"
expect resp.http.alphanum == "761C457BF73B14D27E9E9265C46F4B4DDA11F940"
expect resp.http.digits == "50ABF5706A150990A08B2C5EA40FA0E585554732"
# from Wikipedia
expect resp.http.emptyb64 == "2jmj7l5rSw0yVb/vlWAYkK/YBwk="
expect resp.http.pangramcog == "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3"
expect resp.http.pangramb64 == "L9ThxnotKPzthJ7hu3bnORuT6xI="
expect resp.http.pangramcogb64 == "3p8sf9JeGzr60+haC9F9mxANtLM="
# verified with: base64 -d | sha1sum
expect resp.http.allbytes == "f70d8ebbcd1f4873eb8ceba93879e8ff60b4e4b3"
# RFC2202 test cases
expect resp.http.rfc2202t1 == "b617318655057264e28bc0b6fb378c8ef146be00"
expect resp.http.rfc2202t2 == "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79"
......
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