Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libvmod-blobdigest
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
2
Issues
2
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
libvmod-blobdigest
Commits
d49ce197
Commit
d49ce197
authored
Nov 03, 2016
by
Geoff Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test the digest object with SHA1
parent
b904aca9
Pipeline
#51
skipped
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
244 additions
and
56 deletions
+244
-56
sha1.vtc
src/tests/sha1.vtc
+244
-56
No files found.
src/tests/sha1.vtc
View file @
d49ce197
...
...
@@ -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.emptyb64
f
= blobcode.encode(BASE64, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY, "")));
set resp.http.a
set resp.http.a
f
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY, "a")));
set resp.http.abc
set resp.http.abc
f
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY, "abc")));
set resp.http.msgdigest
set resp.http.msgdigest
f
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"message digest")));
set resp.http.alphasoup
set resp.http.alphasoup
f
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")));
set resp.http.alphanum
set resp.http.alphanum
f
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")));
set resp.http.digits
set resp.http.digits
f
= blobcode.encode(HEXUC, blobdigest.hash(SHA1,
blobcode.decode(IDENTITY,
"12345678901234567890123456789012345678901234567890123456789012345678901234567890")));
set resp.http.pangram
set resp.http.pangram
f
= 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.pangramcog
f
= 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.pangramb64
f
= 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.pangramcogb64
f
= 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.allbytes
f
= 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"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment