首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义iojs addon未能加载RSA私钥

自定义iojs addon未能加载RSA私钥
EN

Stack Overflow用户
提问于 2015-03-04 03:00:32
回答 1查看 72关注 0票数 0

我试图在iojs中加载RSA私钥的代码片段。

代码语言:javascript
复制
void IojsAddon::New(const FunctionCallbackInfo<Value>& args) {
  Isolate* isolate = Isolate::GetCurrent();
  HandleScope scope(isolate);

  if (args.IsConstructCall()) {
    EVP_PKEY* ca_key;
    BIO* keyb = BIO_new(BIO_s_file());
    BIO_read_filename(keyb, "/path/to/key.pem");
    ca_key = PEM_read_bio_PrivateKey(keyb, nullptr, nullptr, nullptr);

    std::cout << "type: " << ca_key->type << std::endl; // type: 6
    std::cout << "check: " << RSA_check_key(ca_key->pkey.rsa) << std::endl; // check: -1
    RSA_print_fp(stdout, ca_key->pkey.rsa, 0);  // Segmentation fault: 11

    IojsAddon* addon = new IojsAddon();
    addon->Wrap(args.This());
    args.GetReturnValue().Set(args.This());
  } else {
    const int argc = 1;
    Local<Value> argv[argc] = { args[0] };
    Local<Function> cons = Local<Function>::New(isolate, constructor);
    args.GetReturnValue().Set(cons->NewInstance(argc, argv));
  }
}

在独立应用程序中成功加载RSA私钥的代码片段,与前一个完全相同。

代码语言:javascript
复制
int main(int argc, char **argv) {
  EVP_PKEY* ca_key;
  BIO* keyb = BIO_new(BIO_s_file());
  BIO_read_filename(keyb, "/path/to/key.pem");
  ca_key = PEM_read_bio_PrivateKey(keyb, nullptr, nullptr, nullptr);

  std::cout << "type: " << ca_key->type << std::endl;  // type: 6
  std::cout << "check: " << RSA_check_key(ca_key->pkey.rsa) << std::endl; // check: -1 
  RSA_print_fp(stdout, ca_key->pkey.rsa, 0);  // print out the key info successfully.
  return (0);
}

附注:

  • iojs: v1.2.0
  • pangyp: v2.0.1

我错过了什么?任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-09 07:38:09

我在这里回答我自己的问题。通过在binding.gyp中包含openssl头文件来解决这个问题。我已经成功地读取了一个X509证书,而没有包含任何头文件,我只是假设构建系统将为我做到这一点。但事实并非如此。你得自己去做。

有关使用openssl的工作iojs插件的更多信息,请查看链接到-OpenSSl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28845935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档