コンテンツにスキップ

pkcs7.h

Functions

Name
int wc_PKCS7_InitWithCert(PKCS7 * pkcs7, byte * cert, word32 certSz)
この関数は、DERフォーマットの証明書を使用してPKCS7構造を初期化します。空のPKCS7構造を初期化するには、NULL CERTとCERTSZの場合は0を渡すことができます。
void wc_PKCS7_Free(PKCS7 * pkcs7)
この関数は、PKCS7の初期化装置によって割り当てられたメモリを解放します。
int wc_PKCS7_EncodeData(PKCS7 * pkcs7, byte * output, word32 outputSz)
この関数はPKCS7データコンテンツタイプを構築し、PKCS7構造をパーセル可能なPKCS7データパケットを含むバッファにエンコードします。
int wc_PKCS7_EncodeSignedData(PKCS7 * pkcs7, byte * output, word32 outputSz)
この関数はPKCS7署名付きデータコンテンツタイプを構築し、PKCS7構造をPARSable PKCS7署名付きデータパケットを含むバッファにエンコードします。
int wc_PKCS7_EncodeSignedData_ex(PKCS7 * pkcs7, const byte * hashBuf, word32 hashSz, byte * outputHead, word32 * outputHeadSz, byte * outputFoot, word32 * outputFootSz)
この関数は、PKCS7の署名付きデータコンテンツタイプを構築し、PKCS7構造をエンコードし、Parsable PKCS7署名付きデータパケットを含むヘッダーおよびフッターバッファにエンコードします。これにはコンテンツは含まれません。ハッシュを計算してデータに提供する必要があります
int wc_PKCS7_VerifySignedData(PKCS7 * pkcs7, byte * pkiMsg, word32 pkiMsgSz)
この関数は、送信されたPKCS7の署名付きデータメッセージを取り、証明書リストと証明書失効リストを抽出してから署名を検証します。与えられたPKCS7構造に抽出されたコンテンツを格納します。
int wc_PKCS7_VerifySignedData_ex(PKCS7 * pkcs7, const byte * hashBuf, word32 hashSz, byte * pkiMsgHead, word32 pkiMsgHeadSz, byte * pkiMsgFoot, word32 pkiMsgFootSz)
この機能は、送信されたPKCS7署名付きデータメッセージをHASH /ヘッダー/フッターとして取り出してから、証明書リストと証明書失効リストを抽出してから、署名を検証します。与えられたPKCS7構造に抽出されたコンテンツを格納します。
int wc_PKCS7_EncodeEnvelopedData(PKCS7 * pkcs7, byte * output, word32 outputSz)
この関数は、PKCS7構造を編集し、PKCS7構造を符号化し、Parsable PKCS7エンベロープデータパケットを含むバッファに編集します。
int wc_PKCS7_DecodeEnvelopedData(PKCS7 * pkcs7, byte * pkiMsg, word32 pkiMsgSz, byte * output, word32 outputSz)
この関数はPKCS7エンベロープデータコンテンツタイプをアントラップして復号化し、メッセージを出力にデコードします。渡されたPKCS7オブジェクトの秘密鍵を使用してメッセージを復号化します。

Functions Documentation

function wc_PKCS7_InitWithCert

int wc_PKCS7_InitWithCert(
    PKCS7 * pkcs7,
    byte * cert,
    word32 certSz
)

この関数は、DERフォーマットの証明書を使用してPKCS7構造を初期化します。空のPKCS7構造を初期化するには、NULL CERTとCERTSZの場合は0を渡すことができます。

Parameters:

  • pkcs7 デコードされた証明書を保存するPKCS7構造へのポインタ
  • cert PKCS7構造を初期化するためのDERフォーマットのASN.1証明書を含むバッファへのポインタ Example
PKCS7 pkcs7;
byte derBuff[] = { }; // initialize with DER-encoded certificate
if ( wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff)) != 0 ) {
    // error parsing certificate into pkcs7 format
}

See: wc_PKCS7_Free

Return:

  • 0 PKCS7構造の初期化に成功しました
  • MEMORY_E xmallocでメモリを割り当てるエラーがある場合
  • ASN_PARSE_E 証明書ヘッダーの解析中にエラーがある場合
  • ASN_OBJECT_ID_E 証明書から暗号化タイプの解析中にエラーがある場合に返されます
  • ASN_EXPECT_0_E CERTファイルの暗号化仕様にフォーマットエラーがある場合
  • ASN_BEFORE_DATE_E 日付が証明書開始日以前の場合返却
  • ASN_AFTER_DATE_E 日付が証明書の有効期限の後にある場合に返されます
  • ASN_BITSTR_E 証明書からビット文字列を解析したエラーがある場合に返されます。
  • ECC_CURVE_OID_E 証明書からECCキーの解析中にエラーがある場合
  • ASN_UNKNOWN_OID_E 証明書が不明なキーオブジェクトIDを使用している場合に返されます
  • ASN_VERSION_E allow_v1_extensionsオプションが定義されておらず、証明書がV1またはV2の証明書の場合に返されます。
  • BAD_FUNC_ARG 証明書拡張機能の処理中にエラーがある場合
  • ASN_CRIT_EXT_E 証明書の処理中になじみのない重要な拡張機能が発生した場合に返されます。
  • ASN_SIG_OID_E 署名暗号化タイプが提供されたファイル内の証明書の暗号化タイプと同じでない場合に返されます。
  • ASN_SIG_CONFIRM_E 認証署名が失敗したことを確認した場合に返されます
  • ASN_NAME_INVALID_E 証明書の名前がCA名制約によって許可されていない場合に返されます。
  • ASN_NO_SIGNER_E 証明書の真正性を確認するためのCA署名者がない場合に返されました

function wc_PKCS7_Free

void wc_PKCS7_Free(
    PKCS7 * pkcs7
)

この関数は、PKCS7の初期化装置によって割り当てられたメモリを解放します。

See: wc_PKCS7_InitWithCert

Return: none いいえ返します。 Example

PKCS7 pkcs7;
// initialize and use PKCS7 object

wc_PKCS7_Free(pkcs7);

function wc_PKCS7_EncodeData

int wc_PKCS7_EncodeData(
    PKCS7 * pkcs7,
    byte * output,
    word32 outputSz
)

この関数はPKCS7データコンテンツタイプを構築し、PKCS7構造をパーセル可能なPKCS7データパケットを含むバッファにエンコードします。

Parameters:

  • pkcs7 符号化するPKCS7構造へのポインタ
  • output エンコードされた証明書を保存するバッファへのポインタ Example
PKCS7 pkcs7;
int ret;

byte derBuff[] = { }; // initialize with DER-encoded certificate
byte pkcs7Buff[FOURK_BUF];

wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
... etc.

ret = wc_PKCS7_EncodeData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
    // error encoding into output buffer
}

See: wc_PKCS7_InitWithCert

Return:

  • Success PKCS7データをバッファに正常にエンコードすると、PKCS7構造内の索引を返します。このインデックスは、出力バッファに書き込まれたバイトにも対応しています。
  • BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます

function wc_PKCS7_EncodeSignedData

int wc_PKCS7_EncodeSignedData(
    PKCS7 * pkcs7,
    byte * output,
    word32 outputSz
)

この関数はPKCS7署名付きデータコンテンツタイプを構築し、PKCS7構造をPARSable PKCS7署名付きデータパケットを含むバッファにエンコードします。

Parameters:

  • pkcs7 符号化するPKCS7構造へのポインタ
  • output エンコードされた証明書を保存するバッファへのポインタ Example
PKCS7 pkcs7;
int ret;

byte data[] = {}; // initialize with data to sign
byte derBuff[] = { }; // initialize with DER-encoded certificate
byte pkcs7Buff[FOURK_BUF];

wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
pkcs7.hashOID = SHAh;
pkcs7.rng = &rng;
... etc.

ret = wc_PKCS7_EncodeSignedData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
    // error encoding into output buffer
}

wc_PKCS7_Free(&pkcs7);

See:

Return:

  • Success PKCS7データをバッファに正常にエンコードすると、PKCS7構造内の索引を返します。このインデックスは、出力バッファに書き込まれたバイトにも対応しています。
  • BAD_FUNC_ARG PKCS7構造が署名付きデータパケットを生成するための1つ以上の要求要素が欠落している場合に返されます。
  • MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
  • PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
  • RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎました
  • BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
  • MP_INIT_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_READ_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_CMP_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_INVMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_EXPTMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MUL_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_ADD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MULMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_TO_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MEM 署名を生成するエラーがある場合は返却される可能性があります

function wc_PKCS7_EncodeSignedData_ex

int wc_PKCS7_EncodeSignedData_ex(
    PKCS7 * pkcs7,
    const byte * hashBuf,
    word32 hashSz,
    byte * outputHead,
    word32 * outputHeadSz,
    byte * outputFoot,
    word32 * outputFootSz
)

この関数は、PKCS7の署名付きデータコンテンツタイプを構築し、PKCS7構造をエンコードし、Parsable PKCS7署名付きデータパケットを含むヘッダーおよびフッターバッファにエンコードします。これにはコンテンツは含まれません。ハッシュを計算してデータに提供する必要があります

Parameters:

  • pkcs7 符号化するPKCS7構造へのポインタ
  • hashBuf コンテンツデータの計算ハッシュへのポインタ
  • hashSz ダイジェストのサイズ
  • outputHead エンコードされた証明書ヘッダーを保存するバッファへのポインタ
  • outputHeadSz 出力ヘッダーバッファのサイズが入力され、実際のサイズを返します。
  • outputFoot エンコードされた証明書フッターを保存するバッファへのポインタ Example
PKCS7 pkcs7;
int ret;
byte derBuff[] = { }; // initialize with DER-encoded certificate
byte data[] = {}; // initialize with data to sign
byte pkcs7HeadBuff[FOURK_BUF/2];
byte pkcs7FootBuff[FOURK_BUF/2];
word32 pkcs7HeadSz = (word32)sizeof(pkcs7HeadBuff);
word32 pkcs7FootSz = (word32)sizeof(pkcs7HeadBuff);
enum wc_HashType hashType = WC_HASH_TYPE_SHA;
byte   hashBuf[WC_MAX_DIGEST_SIZE];
word32 hashSz = wc_HashGetDigestSize(hashType);

wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = NULL;
pkcs7.contentSz = dataSz;
pkcs7.hashOID = SHAh;
pkcs7.rng = &rng;
... etc.

// calculate hash for content
ret = wc_HashInit(&hash, hashType);
if (ret == 0) {
    ret = wc_HashUpdate(&hash, hashType, data, sizeof(data));
    if (ret == 0) {
        ret = wc_HashFinal(&hash, hashType, hashBuf);
    }
    wc_HashFree(&hash, hashType);
}

ret = wc_PKCS7_EncodeSignedData_ex(&pkcs7, hashBuf, hashSz, pkcs7HeadBuff, 
    &pkcs7HeadSz, pkcs7FootBuff, &pkcs7FootSz);
if ( ret != 0 ) {
    // error encoding into output buffer
}

wc_PKCS7_Free(&pkcs7);

See:

Return:

  • 0=Success
  • BAD_FUNC_ARG PKCS7構造が署名付きデータパケットを生成するための1つ以上の要求要素が欠落している場合に返されます。
  • MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
  • PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
  • RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎました
  • BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
  • MP_INIT_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_READ_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_CMP_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_INVMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_EXPTMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MUL_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_ADD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MULMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_TO_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MEM 署名を生成するエラーがある場合は返却される可能性があります

function wc_PKCS7_VerifySignedData

int wc_PKCS7_VerifySignedData(
    PKCS7 * pkcs7,
    byte * pkiMsg,
    word32 pkiMsgSz
)

この関数は、送信されたPKCS7の署名付きデータメッセージを取り、証明書リストと証明書失効リストを抽出してから署名を検証します。与えられたPKCS7構造に抽出されたコンテンツを格納します。

Parameters:

  • pkcs7 解析された証明書を保存するPKCS7構造へのポインタ
  • pkiMsg 署名されたメッセージを含むバッファへのポインタを検証および復号化する Example
PKCS7 pkcs7;
int ret;
byte pkcs7Buff[] = {}; // the PKCS7 signature

wc_PKCS7_InitWithCert(&pkcs7, NULL, 0);
// update message and data to encode
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
... etc.

ret = wc_PKCS7_VerifySignedData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
    // error encoding into output buffer
}

wc_PKCS7_Free(&pkcs7);

See:

Return:

  • 0 メッセージから情報を抽出することに成功しました
  • BAD_FUNC_ARG 入力パラメータの1つが無効な場合は返されます
  • ASN_PARSE_E 与えられたPKIMSGから解析中のエラーがある場合に返されます
  • PKCS7_OID_E 与えられたPKIMSGが署名付きデータ型ではない場合に返されます
  • ASN_VERSION_E PKCS7署名者情報がバージョン1ではない場合に返されます
  • MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
  • PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
  • RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎません
  • BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
  • MP_INIT_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_READ_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_CMP_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_INVMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_EXPTMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MUL_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_ADD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MULMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_TO_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MEM 署名を生成するエラーがある場合は返却される可能性があります

function wc_PKCS7_VerifySignedData_ex

int wc_PKCS7_VerifySignedData_ex(
    PKCS7 * pkcs7,
    const byte * hashBuf,
    word32 hashSz,
    byte * pkiMsgHead,
    word32 pkiMsgHeadSz,
    byte * pkiMsgFoot,
    word32 pkiMsgFootSz
)

この機能は、送信されたPKCS7署名付きデータメッセージをHASH /ヘッダー/フッターとして取り出してから、証明書リストと証明書失効リストを抽出してから、署名を検証します。与えられたPKCS7構造に抽出されたコンテンツを格納します。

Parameters:

  • pkcs7 解析された証明書を保存するPKCS7構造へのポインタ
  • hashBuf コンテンツデータの計算ハッシュへのポインタ
  • hashSz ダイジェストのサイズ
  • pkiMsgHead 署名されたメッセージヘッダーを含むバッファへのポインタを検証およびデコードする
  • pkiMsgHeadSz 署名付きメッセージヘッダーのサイズ
  • pkiMsgFoot 署名されたメッセージフッターを含むバッファへのポインタを検証してデコードする Example
PKCS7 pkcs7;
int ret;
byte data[] = {}; // initialize with data to sign
byte pkcs7HeadBuff[] = {}; // initialize with PKCS7 header
byte pkcs7FootBuff[] = {}; // initialize with PKCS7 footer
enum wc_HashType hashType = WC_HASH_TYPE_SHA;
byte   hashBuf[WC_MAX_DIGEST_SIZE];
word32 hashSz = wc_HashGetDigestSize(hashType);

wc_PKCS7_InitWithCert(&pkcs7, NULL, 0);
// update message and data to encode
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = NULL;
pkcs7.contentSz = dataSz;
pkcs7.rng = &rng;
... etc.

// calculate hash for content
ret = wc_HashInit(&hash, hashType);
if (ret == 0) {
    ret = wc_HashUpdate(&hash, hashType, data, sizeof(data));
    if (ret == 0) {
        ret = wc_HashFinal(&hash, hashType, hashBuf);
    }
    wc_HashFree(&hash, hashType);
}

ret = wc_PKCS7_VerifySignedData_ex(&pkcs7, hashBuf, hashSz, pkcs7HeadBuff, 
    sizeof(pkcs7HeadBuff), pkcs7FootBuff, sizeof(pkcs7FootBuff));
if ( ret != 0 ) {
    // error encoding into output buffer
}

wc_PKCS7_Free(&pkcs7);

See:

Return:

  • 0 メッセージから情報を抽出することに成功しました
  • BAD_FUNC_ARG 入力パラメータの1つが無効な場合は返されます
  • ASN_PARSE_E 与えられたPKIMSGから解析中のエラーがある場合に返されます
  • PKCS7_OID_E 与えられたPKIMSGが署名付きデータ型ではない場合に返されます
  • ASN_VERSION_E PKCS7署名者情報がバージョン1ではない場合に返されます
  • MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
  • PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
  • RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎません
  • BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
  • MP_INIT_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_READ_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_CMP_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_INVMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_EXPTMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MUL_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_ADD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MULMOD_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_TO_E 署名を生成するエラーがある場合は返却される可能性があります
  • MP_MEM 署名を生成するエラーがある場合は返却される可能性があります

function wc_PKCS7_EncodeEnvelopedData

int wc_PKCS7_EncodeEnvelopedData(
    PKCS7 * pkcs7,
    byte * output,
    word32 outputSz
)

この関数は、PKCS7構造を編集し、PKCS7構造を符号化し、Parsable PKCS7エンベロープデータパケットを含むバッファに編集します。

Parameters:

  • pkcs7 符号化するPKCS7構造へのポインタ
  • output エンコードされた証明書を保存するバッファへのポインタ Example
PKCS7 pkcs7;
int ret;

byte derBuff[] = { }; // initialize with DER-encoded certificate
byte pkcs7Buff[FOURK_BUF];

wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
... etc.

ret = wc_PKCS7_EncodeEnvelopedData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
    // error encoding into output buffer
}

See:

Return:

  • Success エンベロープデータ形式でメッセージを正常にエンコードする上で返信され、出力バッファに書き込まれたサイズを返します。
  • BAD_FUNC_ARG: 入力パラメータの1つが無効な場合、またはPKCS7構造が必要な要素を欠落している場合
  • ALGO_ID_E pkcs7構造がサポートされていないアルゴリズムタイプを使用している場合に返されます。現在、DESBとDES3Bのみがサポートされています
  • BUFFER_E 与えられた出力バッファが小さすぎて出力データを保存する場合に返されます
  • MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
  • RNG_FAILURE_E 暗号化の乱数発生器の初期化中にエラーがある場合
  • DRBG_FAILED 暗号化に使用される乱数発生器を使用して数字を生成するエラーが発生した場合

function wc_PKCS7_DecodeEnvelopedData

int wc_PKCS7_DecodeEnvelopedData(
    PKCS7 * pkcs7,
    byte * pkiMsg,
    word32 pkiMsgSz,
    byte * output,
    word32 outputSz
)

この関数はPKCS7エンベロープデータコンテンツタイプをアントラップして復号化し、メッセージを出力にデコードします。渡されたPKCS7オブジェクトの秘密鍵を使用してメッセージを復号化します。

Parameters:

  • pkcs7 エンベロープデータパッケージをデコードする秘密鍵を含むPKCS7構造へのポインタ
  • pkiMsg エンベロープデータパッケージを含むバッファへのポインタ
  • pkiMsgSz 包み込まれたデータパッケージのサイズ
  • output デコードされたメッセージを保存するバッファへのポインタ Example
PKCS7 pkcs7;
byte received[] = { }; // initialize with received enveloped message
byte decoded[FOURK_BUF];
int decodedSz;

// initialize pkcs7 with certificate
// update key
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;

decodedSz = wc_PKCS7_DecodeEnvelopedData(&pkcs7, received,
sizeof(received),decoded, sizeof(decoded));
if ( decodedSz != 0 ) {
    // error decoding message
}

See:

Return:

  • On メッセージから情報を抽出するには、出力に書き込まれたバイト数を返します。
  • BAD_FUNC_ARG 入力パラメータの1つが無効な場合は返されます
  • ASN_PARSE_E 与えられたPKIMSGから解析中のエラーがある場合に返されます
  • PKCS7_OID_E 与えられたPKIMSGがエンベロープデータ型ではない場合に返されます
  • ASN_VERSION_E PKCS7署名者情報がバージョン0ではない場合に返されます
  • MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
  • ALGO_ID_E pkcs7構造がサポートされていないアルゴリズムタイプを使用している場合に返されます。現在、Signature Generation for Signature GenerationのRSAKを使用して、DESBとDES3Bのみが暗号化でサポートされています。
  • PKCS7_RECIP_E 提供された受信者と一致するエンベロープデータに受信者が見つからない場合
  • RSA_BUFFER_E バッファエラーが原因でRSAシグネチャ検証中にエラーがある場合は、小さすぎたり入力が大きすぎたりすると元に戻されます。
  • MP_INIT_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_READ_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_CMP_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_INVMOD_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_EXPTMOD_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_MOD_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_MUL_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_ADD_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_MULMOD_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_TO_E 署名検証中にエラーがある場合は返却される可能性があります
  • MP_MEM 署名検証中にエラーがある場合は返却される可能性があります

Source code


int  wc_PKCS7_InitWithCert(PKCS7* pkcs7, byte* cert, word32 certSz);

void wc_PKCS7_Free(PKCS7* pkcs7);

int  wc_PKCS7_EncodeData(PKCS7* pkcs7, byte* output,
                                       word32 outputSz);

int  wc_PKCS7_EncodeSignedData(PKCS7* pkcs7,
                                       byte* output, word32 outputSz);

int wc_PKCS7_EncodeSignedData_ex(PKCS7* pkcs7, const byte* hashBuf, 
    word32 hashSz, byte* outputHead, word32* outputHeadSz, byte* outputFoot, 
    word32* outputFootSz);

int  wc_PKCS7_VerifySignedData(PKCS7* pkcs7,
                                       byte* pkiMsg, word32 pkiMsgSz);


int wc_PKCS7_VerifySignedData_ex(PKCS7* pkcs7, const byte* hashBuf, 
    word32 hashSz, byte* pkiMsgHead, word32 pkiMsgHeadSz, byte* pkiMsgFoot, 
    word32 pkiMsgFootSz);

int  wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7,
                                          byte* output, word32 outputSz);

int  wc_PKCS7_DecodeEnvelopedData(PKCS7* pkcs7, byte* pkiMsg,
                                          word32 pkiMsgSz, byte* output,
                                          word32 outputSz);

Updated on 2024-04-16 at 02:23:50 +0000