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年以来一直处于非活动状态)
答案 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测试相同的结果。