2015年5月的RFC Y.Nir等人,ChaCha20和Poly1305,用于IETF协议
(http://tools.ietf.org/html/rfc7539)包含对MIT/公共域C库的引用。
我正在把C代码移植到Pascal。8位代码工作正常(自检、示例和RFC测试向量)。
从poly1305-donna-16.h使用16->32位乘法和32位加法的端口失败。经过一些测试,我用DJGPP GCC 4.7.3、MS VC 6.0和BC 3.1编译了原始源代码,三者都失败了(poly1305自测)。
问题:对于其他编译器,此C版本(使用-DPOLY1305_16BIT构建)是否也会失败?是否有已知的修复程序可用?(作者Andrew Moon在https://github.com/floodyberry/poly1305-donna的博客自6年来一直处于不活跃状态)
最佳答案
我可以确认一个漂亮的香草软呢帽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测试相同。
关于c - 验证poly1305-donna-16.h代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31806863/