详细信息请参阅http://code.google.com/p/curve25519-donna/。
构建
如果运行 make
,将构建两个 .a 存档,类似于 djb 的 curve25519 代码。或者,继续阅读
C 实现包含在 curve25519-donna.c 中。它没有外部依赖,并采用 BSD 许可证。您可以直接将其复制/包含/链接到您的程序中。推荐的 C 标志:-O2
x86-64 位实现包含在 curve25519-donna-x86-64.c 和 curve25519-donna-x86-64.s 中。构建如下
% cpp curve25519-donna-x86-64.s > curve25519-donna-x86-64.s.pp % as -o curve25519-donna-x86-64.s.o curve25519-donna-x86-64.s.pp % gcc -O2 -c curve25519-donna-x86-64.c
然后可以将这两个 .o 文件链接
用法
用法与 djb 的代码完全相同(如http://cr.yp.to/ecdh.html所述),函数名为 curve25519_donna。
简要来说,
要生成私钥,生成 32 个随机字节并在
mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64;
要生成公钥,只需这样做:
static const uint8_t basepoint[32] = {9}; curve25519_donna(mypublic, mysecret, basepoint);
要生成共同密钥,执行以下操作:uint8_t shared_key[32]; curve25519_donna(shared_key, mysecret, theirpublic);
在使用之前,使用加密哈希函数对 shared_key 进行哈希处理。