print "void test_%d() {" % counter.next()
    print "    uint8_t secret[%d] = {" % len(secret),
    print      ",".join([str(ord(x)) for x in secret]) + "};"
    print "    uint32_t m[5] = { 0 };"
    print "    const uint32_t expected_m[5] = {" + ", ".join(m_out) + "};"
    print ""
    print "    poly1305_load_m(m, secret, %d);" % len(secret)
    print "    assert(memcmp(m, expected_m, sizeof(m)) == 0);"
    print "}"
    print ""


print "#ifdef NDEBUG"
print "#undef NDEBUG"
print "#endif"
print "#include <assert.h>"
print "#include <string.h>"
print "#include <stdint.h>"
print "#include <stdio.h>"
print
print "void poly1305_load_m(uint32_t r[5], const uint8_t data[], size_t len);"

for len_secret in range(16+1):
    make_test(b"\xaa" * len_secret)
make_test(b"\xcc" * 16)
make_test(b"\xff" * 16)
make_test(b"12\x00kjskskjp39027")
make_test(b"\x00")
make_test(b"\x00" * 16)
make_main()
Ejemplo n.º 2
0
    print ""
    print "    product(t, scratchpad, a, b, %d);" % len(a)
    print "    assert(memcmp(t, expected_t, 8*%d) == 0);" % result_len
    #print '    printf("t[{0}]=0x%016lX\\n", t[{0}]);'.format(result_len)
    print "    assert(t[%d] == 0xAAAAAAAAAAAAAAAAULL);" % result_len
    print "}"
    print ""


print "#include <assert.h>"
print "#include <string.h>"
print "#include <stdint.h>"
print "#include <stdio.h>"
print ""
print "void product(uint64_t *t, uint64_t *product, const uint64_t *a, const uint64_t *b, size_t words);"

make_test(0, 0)
make_test(1, 0)
make_test(27, 98)
make_test(27832782374324, 78237487324872348723847234)
make_test(
    0x786BF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
)
make_test(
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
)

make_main()