2

楕円曲線暗号、openSSL、wolfSSL は初めてです。私のコンテキストは、openssl を使用してコマンド ラインから KeyPair を生成し、秘密鍵をコードにインポートすることです。次に、wolfSSL を使用して署名を生成し、出力します。

出力を DER 形式で保存し、openSSL で検証しようとすると、検証が失敗します。

コード内で wolfSSL を使用して署名して検証すると、正常に検証され、openSSL を使用してコマンド ラインで署名して検証すると成功します。

よくわからないエンコーディングの問題はありますか?

コードの更新

// ECC public key
const uint8_t pubKey[] ={Hex Format key};
// ECC Signature from wolfSSL
char* sigString = {Signature from wolfSSL returned as char};
/* TYPE CONVERTIONS*/
const uint8_t *der_bytes_copy;
const uint8_t *pub_bytes_copy;
der_bytes_copy = (const unsigned char*)sigString;
pub_bytes_copy = pubKey;


EC_KEY *ECpubkey;
size_t keySize = sizeof(pubKey);
int eccgrp;
eccgrp = OBJ_txt2nid("secp256r1");
 ECpubkey = EC_KEY_new_by_curve_name(eccgrp);
o2i_ECPublicKey(&ECpubkey, &pub_bytes_copy, keySize);
ECDSA_SIG *signature;
signature = d2i_ECDSA_SIG(NULL, &der_bytes_copy, signedSize);
uint8_t digest[36];
int verified;
const char message[] = "Test for Authenticate Kernel with ECC";
SHA256_CTX ctx;
SHA256_Init(&ctx);
SHA256_Update(&ctx, (const uint8_t*)message,sizeof(message));
SHA256_Final(digest, &ctx);
verified = ECDSA_do_verify(digest, sizeof(digest), signature, ECpubkey);

秘密鍵は wolfSSL でメッセージに署名するために使用され、公開鍵は openssl で検証されますが、これは突然停止します。

4

1 に答える 1