import std.stdio;
import deimos.openssl.bn;
import deimos.openssl.rsa;
const KEY_SIZE = 1024;
void main(string[] args) {
if (args.length < 1) {
writeln("too few arguments");
}
RSA* rsa = RSA_new();
rsa = RSA_generate_key(KEY_SIZE, RSA_F4, null, null);
if(rsa==null) {
writeln("failure");
}
else {
writeln("success");
// error generated by the line below
if(!BN_generate_prime(rsa.p, (KEY_SIZE/2), 1, null, null, null, null)) {
writeln("prime_failure");
}
else {
writeln("prime success");
}
RSA_free(rsa);
}
}
这会导致以下错误:
rsa.d(21): Error: struct rsa_st is forward referenced
每当我尝试访问 rsa 结构中的元素时,都会发生错误。有什么想法吗?
我联系到了一位经常在 github 上更新 OpenSSL Deimos 的人,并得到了他的回复。
基本上,OpenSSL C API 在某些不需要确切定义的地方前向声明结构,并且这些结构已保留在某些 D 模块中。
他请求拉取存储库,他所做的更改将解决您当前的问题。这是链接:
我不确定 OpenSSL 绑定是否已完成或经过测试。他们在这里的
dmd 2.057
完全坏了。最初的问题是一个 dmd
bug;在另一个 import deimos.openssl.rsa
openssl
之前移动 import
应该将错误 change 更改为其他内容。这可以通过在受影响的模块中导入 pkcs7 来解决......这会发现另一个错误。
我会在 openssl deimos 项目上提出一个问题。