验证poly1305-donna-16.h代码

时间:2015-08-04 10:29:19

标签: c cryptography pascal

2015年5月的Y. Nir等人,ChaCha20和Poly1305的IETF协议的RFC (http://tools.ietf.org/html/rfc7539)包含对MIT /公共域C库https://github.com/floodyberry/poly1305-donna的引用。

我只是将C代码移植到Pascal。 8位代码工作正常(自检,示例和RFC测试向量)。

使用16-> 32位多路复用和32位加法的poly1305-donna-16.h端口失败。经过一些测试后,我用DJGPP GCC 4.7.3,MS VC 6.0和BC 3.1编译了原始来源,所有三个都失败了(poly1305自检)。

问题:此C版本(使用-DPOLY1305_16BIT构建)是否也会因其他编译器而失败?有没有已知的修复程序? (作者Andrew Moon在https://floodyberry.wordpress.com/的博客自6年以来一直处于非活动状态)

1 个答案:

答案 0 :(得分:2)

我可以在漂亮的Fedora 22系统上确认构建失败:

% gcc poly1305-donna.c -c -DPOLY1305_16BIT
% gcc example-poly1305.c -o ex poly1305-donna.o -DPOLY1305_16BIT
% ./ex
poly1305 self test: failed

请注意,当我省略-DPOLY1305_16BIT时,测试成功。

另请注意:

% uname -rmp
4.0.8-300.fc22.x86_64 x86_64 x86_64
% gcc --version
gcc (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4)

我建议你提交错误报告。安德鲁过去一直很敏感。

编辑:

使用clang版本3.5.0进行编译会产生与上述gcc测试相同的结果。