如何使用libtomcrypt库将公共密钥从二进制数组导入rsa_key类型?

问题描述 投票:0回答:1

我有两个c数组。 private_key_der和public_key_der。其中之一是私钥数据,其他是公钥数据。如何使用libtomcrypt将其导入我的加密应用程序?

我已经通过以下步骤完成了键数组的设置:

  1. 以* .pem格式生成的RSA密钥。
  2. 生成* .der(需要libtomcrypt的帮助,并带有此answer
  3. 输出中完成的c数组。

我尝试使用rsa_import功能:

static rsa_key private_key;
static rsa_key public_key;

if (err = rsa_import(private_key_der, sizeof(private_key_der),
    &private_key) != CRYPT_OK)) {
    EMSG("PRIVATE import failed: %d", err);
}

if (err = rsa_import(public_key_der, sizeof(public_key_der),
    &public_key) != CRYPT_OK)) {
    EMSG("PUBLIC import failed: %d", err);
}

私有密钥的导入总是成功的,但是我对公共密钥有麻烦。在公开密钥的情况下,rsa_import()返回CRYPT_INVALID_PACKET。

我尝试调试libtocrypt,并了解到此代码INTO rsa_import()函数在libtomcrypt中发生了一些错误

   /* not SSL public key, try to match against PKCS #1 standards */
   if ((err = der_decode_sequence_multi(in, inlen, 
                                  LTC_ASN1_INTEGER, 1UL, key->N, 
                                  LTC_ASN1_EOL,     0UL, NULL)) != CRYPT_OK) {
      goto LBL_ERR;
   }

我希望我的结果与this相同。

c encryption rsa libtomcrypt
1个回答
0
投票

我已经确定了此问题,并需要帮助将tomcrypt从github official repo更新到最新版本。

rsa_import()正确,并与公钥der数组和私钥一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.