我需要访问Amazon REST服务,就像前面提到的" Delphi中的HMAC-SHA256 "问题一样.由于这必须在D2010中,我正在尝试使用最新的libeay32.dll来传递RFC 4231中的测试向量:
http://tools.ietf.org/html/rfc4231
有没有人有一个方法,使用这个库在Delphi中传递这些测试?shunty在我提到的帖子中发布的代码传递了前两个测试向量以及第五个,但它在第三和第四个失败.这些向量超过64个字节,因为我需要为Amazon签名的所有url超过64个字节,这是一个问题.我无法弄清楚我做错了什么.OpenSSL测试在hmactest.c中,但它只检查EVP_md5,并且测试向量与RFC中的测试向量不完全相同.我需要这个使用SHA256,所以我可以验证RFC中的测试向量.我正在使用以下常量进行测试(现在为将来的查看者更新常量以修复下面评论中提到的复制和粘贴错误):
const
LIBEAY_DLL_NAME = 'libeay32.dll';
EVP_MAX_MD_SIZE = 64;
//RFC 4231 Test case 1
TEST1_KEY: string = '0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b';
TEST1_DATA: string = '4869205468657265';
TEST1_DIGEST: string = 'b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7';
//RFC 4231 Test case 2
TEST2_KEY = '4a656665';
TEST2_DATA = '7768617420646f2079612077616e7420666f72206e6f7468696e673f';
TEST2_DIGEST = '5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843';
//RFC 4231 Test case 3
TEST3_KEY = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
TEST3_DATA = 'dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd';
TEST3_DIGEST = '773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe';
//RFC 4231 Test case 4
TEST4_KEY = '0102030405060708090a0b0c0d0e0f10111213141516171819';
TEST4_DATA = 'cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd';
TEST4_DIGEST = '82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b';
//RFC 4231 Test case 5
TEST5_KEY = …Run Code Online (Sandbox Code Playgroud)