From: mdw Date: Sat, 15 Jul 2000 10:03:30 +0000 (+0000) Subject: Test rig added, based on RIPEMD160-MGF1 test vectors. X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/commitdiff_plain/49db8dbed085499aa5a8a4ae7623fd2b463cb8c5 Test rig added, based on RIPEMD160-MGF1 test vectors. --- diff --git a/oaep.c b/oaep.c index 0e135f2..301e63b 100644 --- a/oaep.c +++ b/oaep.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: oaep.c,v 1.1 2000/07/01 11:18:30 mdw Exp $ + * $Id: oaep.c,v 1.2 2000/07/15 10:01:48 mdw Exp $ * * Optimal asymmetric encryption packing * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: oaep.c,v $ + * Revision 1.2 2000/07/15 10:01:48 mdw + * Test rig added, based on RIPEMD160-MGF1 test vectors. + * * Revision 1.1 2000/07/01 11:18:30 mdw * Support for Optimal Asymmetric Encryption Padding. * @@ -189,4 +192,90 @@ fail: return (rc); } +/*----- Test rig ----------------------------------------------------------*/ + +#ifdef TEST_RIG + +#include + +#include "rmd160.h" +#include "rmd160-mgf.h" + +typedef struct gctx { + grand r; + octet *buf; +} gctx; + +static void rfill(grand *r, void *buf, size_t sz) +{ + gctx *g = (gctx *)r; + memcpy(buf, g->buf, sz); +} + +static const grand_ops gops = { + "const", 0, 0, + 0, 0, + 0, 0, 0, 0, rfill +}; + +static int verify(dstr *v) +{ + gctx gr; + dstr d = DSTR_INIT; + oaep o; + int ok = 1; + + dstr_ensure(&d, v[3].len); + d.len = v[3].len; + gr.r.ops = &gops; + gr.buf = v[2].buf; + + o.cc = &rmd160_mgf; + o.ch = &rmd160; + o.r = &gr.r; + o.ep = v[1].buf; + o.epsz = v[1].len; + + if (oaep_encode(v[0].buf, v[0].len, d.buf, d.len, &o) || + memcmp(d.buf, v[3].buf, d.len) != 0) { + ok = 0; + fputs("\nfailure in oaep_encode", stderr); + fputs("\n message = ", stderr); type_hex.dump(&v[0], stderr); + fputs("\n params = ", stderr); type_hex.dump(&v[1], stderr); + fputs("\n salt = ", stderr); type_hex.dump(&v[2], stderr); + fputs("\nexpected = ", stderr); type_hex.dump(&v[3], stderr); + fputs("\n output = ", stderr); type_hex.dump(&d, stderr); + fputc('\n', stderr); + } + + DRESET(&d); + if (oaep_decode(v[3].buf, v[3].len, &d, &o) < 0 || + d.len != v[0].len || memcmp(d.buf, v[0].buf, d.len) != 0) { + ok = 0; + fputs("\nfailure in oaep_decode", stderr); + fputs("\n goop = ", stderr); type_hex.dump(&v[3], stderr); + fputs("\n params = ", stderr); type_hex.dump(&v[1], stderr); + fputs("\n salt = ", stderr); type_hex.dump(&v[2], stderr); + fputs("\nexpected = ", stderr); type_hex.dump(&v[0], stderr); + fputs("\n output = ", stderr); type_hex.dump(&d, stderr); + fputc('\n', stderr); + } + + dstr_destroy(&d); + return (ok); +} + +static test_chunk tests[] = { + { "oaep", verify, { &type_hex, &type_hex, &type_hex, &type_hex, 0 } }, + { 0, 0, { 0 } } +}; + +int main(int argc, char *argv[]) +{ + test_run(argc, argv, tests, SRCDIR "/tests/oaep"); + return (0); +} + +#endif + /*----- That's all, folks -------------------------------------------------*/ diff --git a/tests/oaep b/tests/oaep new file mode 100644 index 0000000..de1e313 --- /dev/null +++ b/tests/oaep @@ -0,0 +1,14 @@ +# $Id: oaep,v 1.1 2000/07/15 10:03:30 mdw Exp $ +# +# Test vectors for OAEP encoding + +# --- From http://wwww.esat.kuleuven.ac.be/~bosselae/ripemd160.html --- + +oaep { + 54859b342c49ea2a "" aafd12f659cae63489b479e5076ddec2f06cb58f + 007dcfd33b1ca1107625a3fbd99075e7c8adc134bf3f5c201b7ad3e8b3ede0b48136002dd2ec034f04cda492db86973642dd59f018b0908a6504b4f845be3236; + 54859b342c49ea2a 3bf4c66f209e05f2a86eae213322fbf9252d6408 aafd12f659cae63489b479e5076ddec2f06cb58f + 0062732b7784ac93f3ed97ed1d89c7aedf1e98a21f171240b14fa63ee789e54e78fc34dc63650b0395cda492db86973642dd59f018b0908a6504b4f845be3236; + 54859b342c49ea2a 2771857832caf8f054940134a736233269f00d42 aafd12f659cae63489b479e5076ddec2f06cb58f + 00071c2309ec131348e4faeeb5a409135a9c728b72e42e655755cdca7764183c4872204bb51c9bbb2ecda492db86973642dd59f018b0908a6504b4f845be3236; +}