1

BIO*からPKCS7*への変換に関して問題があります。暗号文を復号化するためにPKCS7_decrypt()関数を呼び出したい。その前に、私はコードのこのセクションを持っています:

in = BIO_new_mem_buf(chEnc, iLength);
if (!in) {
    fprintf(stderr, "\nError in BIO_new_mem_buf in verifyEC. STDERR: ");
    ERR_print_errors_fp(stderr);
    return 0;
}

p7 = d2i_PKCS7_bio(in, NULL);
if (!p7) {
    fprintf(stderr, "Error in d2i_PKCS7_bio.\n");
    ERR_print_errors_fp(stderr);
    return 0;
}

d2i_PKCS7_bio()は常に失敗し、次のエラーメッセージを返します。

140172957116064:error:0D0680A8:asn1エンコーディングルーチン:ASN1_CHECK_TLEN:間違ったタグ:tasn_dec.c:1319:140172957116064:error:0D07803A:asn1エンコーディングルーチン:ASN1_ITEM_EX_D2I:ネストされたasn1エラー:tasn_dec.c:381:Type = PK

それを修正する方法はありますか?エンコーディングによる問題ですか?それとも変換の問題ですか?

前もって感謝します

4

1 に答える 1

1

これはおそらく間違った入力形式によるものです: d2i_PKCS7_bio はバイナリ der PKCS7 を想定しています。

一方、入力が pem 形式の場合は、代わりに PEM_read_bio_PKCS7 を呼び出す必要があります。

于 2012-09-19T10:06:38.670 に答える