验证poly1305-donna-16.h代码
Verification of poly1305-donna-16.h code
2015 年 5 月的 RFC Y. Nir 等人、ChaCha20 和 Poly1305 的 IETF 协议
(https://www.rfc-editor.org/rfc/rfc7539) contains a reference to the MIT/Public domain C library https://github.com/floodyberry/poly1305-donna.
我只是将 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://floodyberry.wordpress.com/ 的博客已闲置 6 年)
我可以确认在一个非常普通的 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 测试相同的结果。
2015 年 5 月的 RFC Y. Nir 等人、ChaCha20 和 Poly1305 的 IETF 协议 (https://www.rfc-editor.org/rfc/rfc7539) contains a reference to the MIT/Public domain C library https://github.com/floodyberry/poly1305-donna.
我只是将 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://floodyberry.wordpress.com/ 的博客已闲置 6 年)
我可以确认在一个非常普通的 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 测试相同的结果。