Commit 881aae6b authored by Geoff Simmons's avatar Geoff Simmons

Add tests for AES in CTR mode.

parent ca821758
Pipeline #164 skipped
......@@ -351,3 +351,180 @@ client c1 {
expect resp.http.plaintext64 == "I would like the General Gau's Chicken, please, and wonton soup."
expect resp.http.plaintext == resp.http.plaintext64
} -run
# from check_ctr_cipher() in libgcrypt tests/basic.c
varnish v1 -vcl {
import blobcode;
import gcrypt from "${vmod_topbuild}/src/.libs/libvmod_gcrypt.so";
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new ctr1 = blobcode.blob(HEX,
"f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff");
new ctr2 = blobcode.blob(HEX,
"f0f1f2f3f4f5f6f7f8f9fafbfcfdff00");
new ctr3 = blobcode.blob(HEX,
"f0f1f2f3f4f5f6f7f8f9fafbfcfdff01");
new ctr4 = blobcode.blob(HEX,
"f0f1f2f3f4f5f6f7f8f9fafbfcfdff02");
new p1 = blobcode.blob(HEX, "6bc1bee22e409f96e93d7e117393172a");
new p2 = blobcode.blob(HEX, "ae2d8a571e03ac9c9eb76fac45af8e51");
new p3 = blobcode.blob(HEX, "30c81c46a35ce411e5fbc1191a0a52ef");
new p4 = blobcode.blob(HEX, "f69f2445df4f9b17ad2b417be66c3710");
new p = blobcode.blob(HEX,
"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710");
new k128 = blobcode.blob(HEX,
"2b7e151628aed2a6abf7158809cf4f3c");
new aes128 = gcrypt.symmetric(AES, CTR, key=k128.get());
new c128_1 = blobcode.blob(HEX,
"874d6191b620e3261bef6864990db6ce");
new c128_2 = blobcode.blob(HEX,
"9806f66b7970fdff8617187bb9fffdff");
new c128_3 = blobcode.blob(HEX,
"5ae4df3edbd5d35e5b4f09020db03eab");
new c128_4 = blobcode.blob(HEX,
"1e031dda2fbe03d1792170a0f3009cee");
new c128 = blobcode.blob(HEX,
"874d6191b620e3261bef6864990db6ce9806f66b7970fdff8617187bb9fffdff5ae4df3edbd5d35e5b4f09020db03eab1e031dda2fbe03d1792170a0f3009cee");
new k192 = blobcode.blob(HEX,
"8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b");
new aes192 = gcrypt.symmetric(AES192, CTR, key=k192.get());
new c192_1 = blobcode.blob(HEX,
"1abc932417521ca24f2b0459fe7e6e0b");
new c192_2 = blobcode.blob(HEX,
"090339ec0aa6faefd5ccc2c6f4ce8e94");
new c192_3 = blobcode.blob(HEX,
"1e36b26bd1ebc670d1bd1d665620abf7");
new c192_4 = blobcode.blob(HEX,
"4f78a7f6d29809585a97daec58c6b050");
new c192 = blobcode.blob(HEX,
"1abc932417521ca24f2b0459fe7e6e0b090339ec0aa6faefd5ccc2c6f4ce8e941e36b26bd1ebc670d1bd1d665620abf74f78a7f6d29809585a97daec58c6b050");
new k256 = blobcode.blob(HEX,
"603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4");
new aes256 = gcrypt.symmetric(AES256, CTR, key=k256.get());
new c256_1 = blobcode.blob(HEX,
"601ec313775789a5b7a7f504bbf3d228");
new c256_2 = blobcode.blob(HEX,
"f443e3ca4d62b59aca84e990cacaf5c5");
new c256_3 = blobcode.blob(HEX,
"2b0930daa23de94ce87017ba2d84988d");
new c256_4 = blobcode.blob(HEX,
"dfc9c58db67aada613c2dd08457941a6");
new c256 = blobcode.blob(HEX,
"601ec313775789a5b7a7f504bbf3d228f443e3ca4d62b59aca84e990cacaf5c52b0930daa23de94ce87017ba2d84988ddfc9c58db67aada613c2dd08457941a6");
}
sub vcl_recv {
return(synth(200));
}
sub vcl_synth {
set resp.http.c128-1 = blobcode.encode(HEXLC,
aes128.encrypt(p1.get(), ctr=ctr1.get()));
set resp.http.p128-1 = blobcode.encode(HEXLC,
aes128.decrypt(c128_1.get(), ctr=ctr1.get()));
set resp.http.c128-2 = blobcode.encode(HEXLC,
aes128.encrypt(p2.get(), ctr=ctr2.get()));
set resp.http.p128-2 = blobcode.encode(HEXLC,
aes128.decrypt(c128_2.get(), ctr=ctr2.get()));
set resp.http.c128-3 = blobcode.encode(HEXLC,
aes128.encrypt(p3.get(), ctr=ctr3.get()));
set resp.http.p128-3 = blobcode.encode(HEXLC,
aes128.decrypt(c128_3.get(), ctr=ctr3.get()));
set resp.http.c128-4 = blobcode.encode(HEXLC,
aes128.encrypt(p4.get(), ctr=ctr4.get()));
set resp.http.p128-4 = blobcode.encode(HEXLC,
aes128.decrypt(c128_4.get(), ctr=ctr4.get()));
set resp.http.c128 = blobcode.encode(HEXLC,
aes128.encrypt(p.get(), ctr=ctr1.get()));
set resp.http.p128 = blobcode.encode(HEXLC,
aes128.decrypt(c128.get(), ctr=ctr1.get()));
set resp.http.c192-1 = blobcode.encode(HEXLC,
aes192.encrypt(p1.get(), ctr=ctr1.get()));
set resp.http.p192-1 = blobcode.encode(HEXLC,
aes192.decrypt(c192_1.get(), ctr=ctr1.get()));
set resp.http.c192-2 = blobcode.encode(HEXLC,
aes192.encrypt(p2.get(), ctr=ctr2.get()));
set resp.http.p192-2 = blobcode.encode(HEXLC,
aes192.decrypt(c192_2.get(), ctr=ctr2.get()));
set resp.http.c192-3 = blobcode.encode(HEXLC,
aes192.encrypt(p3.get(), ctr=ctr3.get()));
set resp.http.p192-3 = blobcode.encode(HEXLC,
aes192.decrypt(c192_3.get(), ctr=ctr3.get()));
set resp.http.c192-4 = blobcode.encode(HEXLC,
aes192.encrypt(p4.get(), ctr=ctr4.get()));
set resp.http.p192-4 = blobcode.encode(HEXLC,
aes192.decrypt(c192_4.get(), ctr=ctr4.get()));
set resp.http.c192 = blobcode.encode(HEXLC,
aes192.encrypt(p.get(), ctr=ctr1.get()));
set resp.http.p192 = blobcode.encode(HEXLC,
aes192.decrypt(c192.get(), ctr=ctr1.get()));
set resp.http.c256-1 = blobcode.encode(HEXLC,
aes256.encrypt(p1.get(), ctr=ctr1.get()));
set resp.http.p256-1 = blobcode.encode(HEXLC,
aes256.decrypt(c256_1.get(), ctr=ctr1.get()));
set resp.http.c256-2 = blobcode.encode(HEXLC,
aes256.encrypt(p2.get(), ctr=ctr2.get()));
set resp.http.p256-2 = blobcode.encode(HEXLC,
aes256.decrypt(c256_2.get(), ctr=ctr2.get()));
set resp.http.c256-3 = blobcode.encode(HEXLC,
aes256.encrypt(p3.get(), ctr=ctr3.get()));
set resp.http.p256-3 = blobcode.encode(HEXLC,
aes256.decrypt(c256_3.get(), ctr=ctr3.get()));
set resp.http.c256-4 = blobcode.encode(HEXLC,
aes256.encrypt(p4.get(), ctr=ctr4.get()));
set resp.http.p256-4 = blobcode.encode(HEXLC,
aes256.decrypt(c256_4.get(), ctr=ctr4.get()));
set resp.http.c256 = blobcode.encode(HEXLC,
aes256.encrypt(p.get(), ctr=ctr1.get()));
set resp.http.p256 = blobcode.encode(HEXLC,
aes256.decrypt(c256.get(), ctr=ctr1.get()));
return(deliver);
}
}
client c1 {
txreq
rxresp
expect resp.status == 200
expect resp.http.c128-1 == "874d6191b620e3261bef6864990db6ce"
expect resp.http.p128-1 == "6bc1bee22e409f96e93d7e117393172a"
expect resp.http.c128-2 == "9806f66b7970fdff8617187bb9fffdff"
expect resp.http.p128-2 == "ae2d8a571e03ac9c9eb76fac45af8e51"
expect resp.http.c128-3 == "5ae4df3edbd5d35e5b4f09020db03eab"
expect resp.http.p128-3 == "30c81c46a35ce411e5fbc1191a0a52ef"
expect resp.http.c128-4 == "1e031dda2fbe03d1792170a0f3009cee"
expect resp.http.p128-4 == "f69f2445df4f9b17ad2b417be66c3710"
expect resp.http.c128 == "874d6191b620e3261bef6864990db6ce9806f66b7970fdff8617187bb9fffdff5ae4df3edbd5d35e5b4f09020db03eab1e031dda2fbe03d1792170a0f3009cee"
expect resp.http.p128 == "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710"
expect resp.http.c192-1 == "1abc932417521ca24f2b0459fe7e6e0b"
expect resp.http.p192-1 == resp.http.p128-1
expect resp.http.c192-2 == "090339ec0aa6faefd5ccc2c6f4ce8e94"
expect resp.http.p192-2 == resp.http.p128-2
expect resp.http.c192-3 == "1e36b26bd1ebc670d1bd1d665620abf7"
expect resp.http.p192-3 == resp.http.p128-3
expect resp.http.c192-4 == "4f78a7f6d29809585a97daec58c6b050"
expect resp.http.p192-4 == resp.http.p128-4
expect resp.http.c192 == "1abc932417521ca24f2b0459fe7e6e0b090339ec0aa6faefd5ccc2c6f4ce8e941e36b26bd1ebc670d1bd1d665620abf74f78a7f6d29809585a97daec58c6b050"
expect resp.http.p192 == resp.http.p128
expect resp.http.c256-1 == "601ec313775789a5b7a7f504bbf3d228"
expect resp.http.p256-1 == resp.http.p128-1
expect resp.http.c256-2 == "f443e3ca4d62b59aca84e990cacaf5c5"
expect resp.http.p256-2 == resp.http.p128-2
expect resp.http.c256-3 == "2b0930daa23de94ce87017ba2d84988d"
expect resp.http.p256-3 == resp.http.p128-3
expect resp.http.c256-4 == "dfc9c58db67aada613c2dd08457941a6"
expect resp.http.p256-4 == resp.http.p128-4
expect resp.http.c256 == "601ec313775789a5b7a7f504bbf3d228f443e3ca4d62b59aca84e990cacaf5c52b0930daa23de94ce87017ba2d84988ddfc9c58db67aada613c2dd08457941a6"
expect resp.http.p256 == resp.http.p128
} -run
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