curve25519-donna 1.2.1

curve25519-donna 1.2.1

测试已测试
语言语言 CC
许可证 BSD 3.0
发布最后发布2014年12月

Frederic Jacobs 维护。



  • 作者
  • Dan Bernstein

详细信息请参阅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 进行哈希处理。