コンテンツにスキップ

ASN.1

Functions

Name
int wc_InitCert(Cert * )
この関数はCert構造体をデフォルトの値で初期化します。デフォルトのオプション:version = 3(0x2)、sigtype = sha_with_rsa、issuer =空白、dayValid = 500、selfsigned = 1(true)発行者としての件名=空白
Cert * wc_CertNew(void * heap)
この関数は証明書操作の為に新たなCert構造体を割り当てます。 割り当てたCert構造体はこの関数内で初期化されるので、wc_InitCert()を呼び出す必要はありません。 アプリケーションがこのCert構造体の使用を終了する際にはwc_CertFree()を呼び出す必要があります。
void wc_CertFree(Cert * cert)
この関数はwc_CertNew()で確保されたCert構造体を解放します。
int wc_MakeCert(Cert * cert, byte * derBuffer, word32 derSz, RsaKey * rsaKey, ecc_key * eccKey, WC_RNG * rng)
CA署名付き証明書を作成するために使用されます。 サブジェクト情報を入力した後に呼び出す必要があります。 この関数は、証明書入力からX.509v3 RSAまたはECC証明書を作成しderBufferに書き込みます。 証明書を生成するためのRsaKeyまたはEccKeyのいずれかを引数として取ります。 この関数が呼び出される前に、証明書をwc_InitCertで初期化する必要があります。
int wc_MakeCertReq(Cert * cert, byte * derBuffer, word32 derSz, RsaKey * rsaKey, ecc_key * eccKey)
この関数は、入力されたCert構造体を使用して証明書署名要求を作成しderBufferに書き込みます。 証明書要求の生成にはRsaKeyまたはEccKeyのいずれかの鍵を受け取り使用します。 この関数の後に、署名するためにwc_SignCert()を呼び出す必要があります。 この関数の使用例については、wolfCryptテストアプリケーション(./wolfcrypt/test/test.c)を参照してください。
int wc_SignCert(int requestSz, int sigType, byte * derBuffer, word32 derSz, RsaKey * rsaKey, ecc_key * eccKey, WC_RNG * rng)
この関数はバッファーの内容に署名し、署名をバッファの最後に追加します。署名の種類を取ります。 CA署名付き証明書を作成する場合は、wc_MakeCert()またはwc_MakeCertReq()の後に呼び出す必要があります。
int wc_MakeSelfCert(Cert * cert, byte * derBuffer, word32 derSz, RsaKey * key, WC_RNG * rng)
この関数は、以前の2つの関数、wc_MakeCert、および自己署名のためのwc_SignCertの組み合わせです(前の関数はCA要求に使用される場合があります)。 証明書を作成してから、それに署名し、自己署名証明書を生成します。
int wc_SetIssuer(Cert * cert, const char * issuerFile)
この関数はPEM形式のissureFileで与えられた発行者を証明書の発行者として設定します。 また、その際に、証明書の自己署名プロパティをfalseに変更します。 発行者は証明書の発行者として設定される前に検証されます。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetSubject(Cert * cert, const char * subjectFile)
この関数はPEM形式のsubjectFileで与えられた主体者を証明書の主体者として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetSubjectRaw(Cert * cert, const byte * der, int derSz)
この関数はDER形式でバッファに格納されているRaw-Subject情報を証明書のRaw-Subject情報として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_GetSubjectRaw(byte ** subjectRaw, Cert * cert)
この関数はCert構造体からRaw-Subject情報を取り出します。
int wc_SetAltNames(Cert * cert, const char * file)
この関数は引数で与えられたPEM形式の証明書の主体者の別名をCert構造体に設定します。 複数のドメインで同一の証明書を使用する際には主体者の別名を付与する機能は有用です。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetIssuerBuffer(Cert * cert, const byte * der, int derSz)
この関数はDER形式でバッファに格納されている発行者を証明書の発行者として設定します。 加えて、証明書の事故署名プロパティをfalseに設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetIssuerRaw(Cert * cert, const byte * der, int derSz)
この関数はDER形式でバッファに格納されているRaw-Issuer情報を証明書のRaw-Issuer情報として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetSubjectBuffer(Cert * cert, const byte * der, int derSz)
この関数はDER形式でバッファに格納されている主体者を証明書の主体者として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetAltNamesBuffer(Cert * cert, const byte * der, int derSz)
この関数はDER形式でバッファに格納されている「別名情報」を証明書の「別名情報」として設定します。 この機能は複数ドメインを一つの証明書を使ってセキュアにする際に有用です。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetDatesBuffer(Cert * cert, const byte * der, int derSz)
この関数はDER形式でバッファに格納されている「有効期間」情報を証明書の「有効期間」情報として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。
int wc_SetAuthKeyIdFromPublicKey(Cert * cert, RsaKey * rsakey, ecc_key * eckey)
この関数は指定されたRSAあるいはECC公開鍵の一方から得たAKID(認証者鍵ID)を証明書のAKIDとして設定します。
int wc_SetAuthKeyIdFromCert(Cert * cert, const byte * der, int derSz)
この関数はDER形式でバッファに格納された証明書から得たAKID(認証者鍵ID)を証明書のAKIDとして設定します。
int wc_SetAuthKeyId(Cert * cert, const char * file)
この関数はPEM形式の証明書から得たAKID(認証者鍵ID)を証明書のAKIDとして設定します。
int wc_SetSubjectKeyIdFromPublicKey(Cert * cert, RsaKey * rsakey, ecc_key * eckey)
この関数は指定されたRSAあるいはECC公開鍵の一方から得たSKID(主体者鍵ID)を証明書のSKIDとして設定します。
int wc_SetSubjectKeyId(Cert * cert, const char * file)
この関数はPEM形式の証明書から得たSKID(主体者鍵ID)を証明書のSKIDとして設定します。 引数は両方が与えられることが必要です。
int wc_PemPubKeyToDer(const char * fileName, unsigned char * derBuf, int derSz)
PEM形式の鍵ファイルをロードしDER形式に変換してバッファに出力します。
int wc_PubKeyPemToDer(const unsigned char * pem, int pemSz, unsigned char * buff, int buffSz)
PEM形式の鍵データをDER形式に変換してバッファに出力し、出力バイト数あるいは負のエラー値を返します。
int wc_PemCertToDer(const char * fileName, unsigned char * derBuf, int derSz)
この関数はPEM形式の証明書をDER形式に変換し、与えられたバッファに出力します。
int wc_DerToPem(const byte * der, word32 derSz, byte * output, word32 outputSz, int type)
この関数はバッファで与えられたDER形式の証明書をPEM形式に変換し、与えられた出力用バッファに出力します。 この関数は入力バッファと出力バッファを共用することはできません。両バッファは必ず別のものを用意してください。
int wc_DerToPemEx(const byte * der, word32 derSz, byte * output, word32 outputSz, byte * cipherIno, int type)
この関数はDER形式証明書を入力バッファから読み出し、PEM形式に変換して出力バッファに出力します。 この関数は入力バッファと出力バッファを共用することはできません。両バッファは必ず別のものを用意してください。 追加の暗号情報を指定することができます。
int wc_EccPrivateKeyDecode(const byte * input, word32 * inOutIdx, ecc_key * key, word32 inSz)
この関数はECC秘密鍵を入力バッファから読み込み、解析の後ecc_key構造体を作成してそこに鍵を格納します。
int wc_EccKeyToDer(ecc_key * key, byte * output, word32 inLen)
この関数はECC秘密鍵をDER形式でバッファに出力します。
int wc_EccPublicKeyDecode(const byte * input, word32 * inOutIdx, ecc_key * key, word32 inSz)
この関数は入力バッファのECC公開鍵をASNシーケンスをデコードして取り出します。
int wc_EccPublicKeyToDer(ecc_key * key, byte * output, word32 inLen, int with_AlgCurve)
この関数はECC公開鍵をDER形式に変換します。 処理したバッファのサイズを返します。変換して得られるDER形式のECC公開鍵は出力バッファに格納されます。 AlgCurveフラグの指定により、アルゴリズムと曲線情報をヘッダーに含めることができます。
int wc_EccPublicKeyToDer_ex(ecc_key * key, byte * output, word32 inLen, int with_AlgCurve, int comp)
この関数はECC公開鍵をDER形式に変換します。 処理したバッファサイズを返します。変換されたDER形式のECC公開鍵は出力バッファに格納されます。 AlgCurveフラグの指定により、アルゴリズムと曲線情報をヘッダーに含めることができます。 compパラメータは公開鍵を圧縮して出力するか否かを指定します。
word32 wc_EncodeSignature(byte * out, const byte * digest, word32 digSz, int hashOID)
この関数はデジタル署名をエンコードして出力バッファに出力し、生成された署名のサイズを返します。
int wc_GetCTC_HashOID(int type)
この関数はハッシュタイプに対応したハッシュOIDを返します。 例えば、ハッシュタイプが"WC_SHA512"の場合、この関数は"SHA512h"を対応するハッシュOIDとして返します。
void wc_SetCert_Free(Cert * cert)
この関数はキャッシュされていたCert構造体で使用されたメモリとリソースをクリーンアップします。 WOLFSSL_CERT_GEN_CACHEが定義されている場合にはDecodedCert構造体がCert構造体内部にキャッシュされ、後続するset系関数の呼び出しの都度DecodedCert構造体がパースされることを防ぎます。
int wc_GetPkcs8TraditionalOffset(byte * input, word32 * inOutIdx, word32 sz)
この関数はPKCS#8の暗号化されていないバッファ内部の従来の秘密鍵の開始位置を検出して返します。
int wc_CreatePKCS8Key(byte * out, word32 * outSz, byte * key, word32 keySz, int algoID, const byte * curveOID, word32 oidSz)
この関数はDER形式の秘密鍵を入力とし、RKCS#8形式に変換します。 また、PKCS#12のシュロ―ディットキーバッグの作成にも使用できます。RFC5208を参照のこと。
int wc_EncryptPKCS8Key(byte * key, word32 keySz, byte * out, word32 * outSz, const char * password, int passwordSz, int vPKCS, int pbeOid, int encAlgId, byte * salt, word32 saltSz, int itt, WC_RNG * rng, void * heap)
この関数は暗号化されていないPKCS#8のDER形式の鍵(例えばwc_CreatePKCS8Keyで生成された鍵)を受け取り、PKCS#8 暗号化形式に変換します。 結果として得られた暗号化鍵はwc_DecryptPKCS8Keyを使って復号できます。RFC5208を参照してください。
int wc_DecryptPKCS8Key(byte * input, word32 sz, const char * password, int passwordSz)
この関数は暗号化されたPKCS#8のDER形式の鍵を受け取り、復号してPKCS#8 DER形式に変換します。 wc_EncryptPKCS8Keyによって行われた暗号化を元に戻します。RFC5208を参照してください。 入力データは復号データによって上書きされます。
int wc_CreateEncryptedPKCS8Key(byte * key, word32 keySz, byte * out, word32 * outSz, const char * password, int passwordSz, int vPKCS, int pbeOid, int encAlgId, byte * salt, word32 saltSz, int itt, WC_RNG * rng, void * heap)
この関数は従来のDER形式の鍵をPKCS#8フォーマットに変換し、暗号化を行います。 この処理にはwc_CreatePKCS8Keyとwc_EncryptPKCS8Keyを使用します。
void wc_InitDecodedCert(struct DecodedCert * cert, const byte * source, word32 inSz, void * heap)
この関数はcert引数で与えられたDecodedCert構造体を初期化します。 DER形式の証明書を含んでいるsource引数の指すポインタから証明書サイズinSzの長さを内部に保存します。 この関数の後に呼び出されるwc_ParseCertによって証明書が解析されます。
int wc_ParseCert(DecodedCert * cert, int type, int verify, void * cm)
この関数はDecodedCert構造体に保存されているDER形式の証明書を解析し、その構造体に各種フィールドを設定します。 DecodedCert構造体はwc_InitDecodedCertを呼び出して初期化しておく必要があります。 この関数はオプションでCertificateManager構造体へのポインタを受け取り、CAが証明書マネジャーで検索できた場合には、 そのCAに関する情報もDecodedCert構造体に追加設定します。
void wc_FreeDecodedCert(struct DecodedCert * cert)
この関数はwc_InitDecodedCertで初期化済みのDecodedCert構造体を解放します。
int wc_SetTimeCb(wc_time_cb f)
この関数はタイムコールバック関数を登録します。wolfSSLが現在時刻を必要としたタイミングでこのコールバックを呼び出します。 このタイムコールバック関数のプロトタイプ(シグネチャ)はC標準ライブラリの"time"関数と同一です。
time_t wc_Time(time_t * t)
この関数は現在時刻を取得します。デフォルトでXTIMEマクロ関数を使います。このマクロ関数はプラットフォーム依存です。 ユーザーはこのマクロの代わりにwc_SetTimeCbでタイムコールバック関数を使うように設定することができます
int wc_SetCustomExtension(Cert * cert, int critical, const char * oid, const byte * der, word32 derSz)
この関数はX.509証明書にカスタム拡張を追加します。 注: この関数に渡すポインタ引数が保持する内容は証明書が生成されるまで変更されてはいけません。 この関数ではポインタが指す先の内容は別のバッファには複製しません。
int wc_SetUnknownExtCallback(DecodedCert * cert, wc_UnknownExtCallback cb)
この関数はwolfSSLが証明書の解析中に未知のX.509拡張に遭遇した際に呼び出すコールバック関数を登録します。 コールバック関数のプロトタイプは使用例を参照してください。
int wc_CheckCertSigPubKey(const byte * cert, word32 certSz, void * heap, const byte * pubKey, word32 pubKeySz, int pubKeyOID)
この関数はDER形式のX.509 証明書の署名を与えられた公開鍵を使って検証します。 公開鍵はDER形式で全公開鍵情報を含んだものが求められます。
int wc_Asn1PrintOptions_Init(Asn1PrintOptions * opts)
この関数はAsn1PrintOptions構造体を初期化します。
int wc_Asn1PrintOptions_Set(Asn1PrintOptions * opts, enum Asn1PrintOpt opt, word32 val)
この関数はAsn1PrintOptions構造体にプリント情報を設定します。
int wc_Asn1_Init(Asn1 * asn1)
この関数はAsn1構造体を初期化します。
int wc_Asn1_SetFile(Asn1 * asn1, XFILE file)
この関数は出力先として使用するファイルをAsn1構造体にセットします。
int wc_Asn1_PrintAll(Asn1 * asn1, Asn1PrintOptions * opts, unsigned char * data, word32 len)
ASN.1アイテムをプリントします。

Functions Documentation

function wc_InitCert

int wc_InitCert(
    Cert * 
)

この関数はCert構造体をデフォルトの値で初期化します。デフォルトのオプション:version = 3(0x2)、sigtype = sha_with_rsa、issuer =空白、dayValid = 500、selfsigned = 1(true)発行者としての件名=空白

See:

Return: 成功した場合0を返します。

Example

Cert myCert;
wc_InitCert(&myCert);

function wc_CertNew

Cert * wc_CertNew(
    void * heap
)

この関数は証明書操作の為に新たなCert構造体を割り当てます。 割り当てたCert構造体はこの関数内で初期化されるので、wc_InitCert()を呼び出す必要はありません。 アプリケーションがこのCert構造体の使用を終了する際にはwc_CertFree()を呼び出す必要があります。

Parameters:

  • メモリの動的確保で使用されるヒープへのポインタ。NULLの指定も可。 Example
Cert*   myCert;

myCert = wc_CertNew(NULL);
if (myCert == NULL) {
    // Cert creation failure
}

See:

Return:

  • 処理が成功した際には新に割り当てられたCert構造体へのポインタを返します。
  • メモリ確保に失敗した場合にはNULLを返します。

function wc_CertFree

void wc_CertFree(
    Cert * cert
)

この関数はwc_CertNew()で確保されたCert構造体を解放します。

Parameters:

  • 解放すべきCert構造体へのポインタ Example
Cert*   myCert;

myCert = wc_CertNew(NULL);

// Perform cert operations.

wc_CertFree(myCert);

See:

Return: 無し

function wc_MakeCert

int wc_MakeCert(
    Cert * cert,
    byte * derBuffer,
    word32 derSz,
    RsaKey * rsaKey,
    ecc_key * eccKey,
    WC_RNG * rng
)

CA署名付き証明書を作成するために使用されます。 サブジェクト情報を入力した後に呼び出す必要があります。 この関数は、証明書入力からX.509v3 RSAまたはECC証明書を作成しderBufferに書き込みます。 証明書を生成するためのRsaKeyまたはEccKeyのいずれかを引数として取ります。 この関数が呼び出される前に、証明書をwc_InitCertで初期化する必要があります。

Parameters:

  • cert 初期化されたCert構造体へのポインタ
  • derBuffer 生成された証明書を保持するバッファへのポインタ
  • derSz 証明書を保存するバッファのサイズ
  • rsaKey 証明書の生成に使用されるRSA鍵を含むRsaKey構造体へのポインタ
  • eccKey 証明書の生成に使用されるECC鍵を含むEccKey構造体へのポインタ

See:

Return:

  • 指定された入力証明書からX509証明書が正常に生成された場合、生成された証明書のサイズを返します。
  • MEMORY_E xmallocでのメモリ割り当でエラーが発生した場合に返ります。
  • BUFFER_E 提供されたderBufferが生成された証明書を保存するには小さすぎる場合に返されます
  • Others 証明書の生成が成功しなかった場合、追加のエラーメッセージが返される可能性があります。

Example

Cert myCert;
wc_InitCert(&myCert);
WC_RNG rng;
//initialize rng;
RsaKey key;
//initialize key;
byte * derCert = malloc(FOURK_BUF);
word32 certSz;
certSz = wc_MakeCert(&myCert, derCert, FOURK_BUF, &key, NULL, &rng);

function wc_MakeCertReq

int wc_MakeCertReq(
    Cert * cert,
    byte * derBuffer,
    word32 derSz,
    RsaKey * rsaKey,
    ecc_key * eccKey
)

この関数は、入力されたCert構造体を使用して証明書署名要求を作成しderBufferに書き込みます。 証明書要求の生成にはRsaKeyまたはEccKeyのいずれかの鍵を受け取り使用します。 この関数の後に、署名するためにwc_SignCert()を呼び出す必要があります。 この関数の使用例については、wolfCryptテストアプリケーション(./wolfcrypt/test/test.c)を参照してください。

Parameters:

  • cert 初期化されたCert構造体へのポインタ
  • derBuffer 生成された証明書署名要求を保持するバッファへのポインタ
  • derSz 証明書署名要求を保存するバッファのサイズ
  • rsaKey 証明書署名要求を生成するために使用されるRSA鍵を含むRsaKey構造体へのポインタ
  • eccKey 証明書署名要求を生成するために使用されるRECC鍵を含むEccKey構造体へのポインタ

See:

Return:

  • 証明書署名要求が正常に生成されると、生成された証明書署名要求のサイズを返します。
  • MEMORY_E xmallocでのメモリ割り当てでエラーが発生した場合
  • BUFFER_E 提供されたderBufferが生成された証明書を保存するには小さすぎる場合
  • Other 証明書署名要求の生成が成功しなかった場合、追加のエラーメッセージが返される可能性があります。

Example

Cert myCert;
// initialize myCert
EccKey key;
//initialize key;
byte* derCert = (byte*)malloc(FOURK_BUF);

word32 certSz;
certSz = wc_MakeCertReq(&myCert, derCert, FOURK_BUF, NULL, &key);

function wc_SignCert

int wc_SignCert(
    int requestSz,
    int sigType,
    byte * derBuffer,
    word32 derSz,
    RsaKey * rsaKey,
    ecc_key * eccKey,
    WC_RNG * rng
)

この関数はバッファーの内容に署名し、署名をバッファの最後に追加します。署名の種類を取ります。 CA署名付き証明書を作成する場合は、wc_MakeCert()またはwc_MakeCertReq()の後に呼び出す必要があります。

Parameters:

  • requestSz 署名対象の証明書本文のサイズ
  • sigType 作成する署名の種類。有効なオプションは次のとおりです:CTC_MD5WRSA、CTC_SHAWRSA、CTC_SHAWECDSA、CTC_SHA256WECDSA、ANDCTC_SHA256WRSA
  • derBuffer 署名対象の証明書を含むバッファへのポインタ。関数の処理成功時には署名が付加された証明書を保持します。
  • derSz 新たに署名された証明書を保存するバッファの(合計)サイズ
  • rsaKey 証明書に署名するために使用されるRSA鍵を含むRsaKey構造体へのポインタ
  • eccKey 証明書に署名するために使用されるECC鍵を含むEccKey構造体へのポインタ
  • rng 署名に使用する乱数生成器(WC_RNG構造体)へのポインタ

See:

Return:

  • 証明書への署名に成功した場合は、証明書の新しいサイズ(署名を含む)を返します。
  • MEMORY_E xmallocでのメモリを割り当てでエラーがある場合
  • BUFFER_E 提供された証明書を保存するには提供されたバッファが小さすぎる場合に返されます。
  • Other 証明書の生成が成功しなかった場合、追加のエラーメッセージが返される可能性があります。

Example

Cert myCert;
byte* derCert = (byte*)malloc(FOURK_BUF);
// initialize myCert, derCert
RsaKey key;
// initialize key;
WC_RNG rng;
// initialize rng

word32 certSz;
certSz = wc_SignCert(myCert.bodySz, myCert.sigType, derCert, FOURK_BUF,
&key, NULL, &rng);

function wc_MakeSelfCert

int wc_MakeSelfCert(
    Cert * cert,
    byte * derBuffer,
    word32 derSz,
    RsaKey * key,
    WC_RNG * rng
)

この関数は、以前の2つの関数、wc_MakeCert、および自己署名のためのwc_SignCertの組み合わせです(前の関数はCA要求に使用される場合があります)。 証明書を作成してから、それに署名し、自己署名証明書を生成します。

Parameters:

  • cert 署名する対象のCert構造体へのポインタ
  • derBuffer 署名付き証明書を保持するためのバッファへのポインタ
  • derSz 署名付き証明書を保存するバッファのサイズ
  • key 証明書に署名するために使用されるRSA鍵を含むRsaKey構造体へのポインタ
  • rng 署名に使用する乱数生成器(WC_RNG構造体)へのポインタ

See:

Return:

  • 証明書への署名が成功した場合は、証明書の新しいサイズを返します。
  • MEMORY_E xmallocでのメモリを割り当てでエラーがある場合
  • BUFFER_E 提供された証明書を保存するには提供されたバッファが小さすぎる場合に返されます。
  • Other 証明書の生成が成功しなかった場合、追加のエラーメッセージが返される可能性があります。

Example

Cert myCert;
byte* derCert = (byte*)malloc(FOURK_BUF);
// initialize myCert, derCert
RsaKey key;
// initialize key;
WC_RNG rng;
// initialize rng

word32 certSz;
certSz = wc_MakeSelfCert(&myCert, derCert, FOURK_BUF, &key, NULL, &rng);

function wc_SetIssuer

int wc_SetIssuer(
    Cert * cert,
    const char * issuerFile
)

この関数はPEM形式のissureFileで与えられた発行者を証明書の発行者として設定します。 また、その際に、証明書の自己署名プロパティをfalseに変更します。 発行者は証明書の発行者として設定される前に検証されます。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert 発行者を設定する対象のCert構造体へのポインタ
  • issuerFile PEM形式の証明書ファイルへのファイルパス

See:

Return:

  • 0 証明書の発行者の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の発行者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
if(wc_SetIssuer(&myCert, ”./path/to/ca-cert.pem”) != 0) {
    // error setting issuer
}

function wc_SetSubject

int wc_SetSubject(
    Cert * cert,
    const char * subjectFile
)

この関数はPEM形式のsubjectFileで与えられた主体者を証明書の主体者として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • 主体者を設定する対象のCert構造体へのポインタ
  • subjectFile PEM形式の証明書ファイルへのファイルパス

See:

Return:

  • 0 証明書の主体者の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
if(wc_SetSubject(&myCert, ”./path/to/ca-cert.pem”) != 0) {
    // error setting subject
}

function wc_SetSubjectRaw

int wc_SetSubjectRaw(
    Cert * cert,
    const byte * der,
    int derSz
)

この関数はDER形式でバッファに格納されているRaw-Subject情報を証明書のRaw-Subject情報として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert Raw-Subject情報を設定する対象のCert構造体へのポインタ
  • der DER形式の証明書を格納しているバッファへのポインタ。この証明書のRaw-Subject情報が取り出されてcertに設定されます。
  • derSz DER形式の証明書を格納しているバッファのサイズ

See:

Return:

  • 0 証明書のRaw-Subject情報の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。
  • ASN_NO_SIGNER_E CA証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
byte* der;
der = (byte*)malloc(FOURK_BUF);
// initialize der
if(wc_SetSubjectRaw(&myCert, der, FOURK_BUF) != 0) {
    // error setting subject
}

function wc_GetSubjectRaw

int wc_GetSubjectRaw(
    byte ** subjectRaw,
    Cert * cert
)

この関数はCert構造体からRaw-Subject情報を取り出します。

Parameters:

  • subjectRaw 処理が成功した際に返されるRaw-Subject情報を格納するバッファへのポインタのポインタ
  • cert Raw-Subject情報を保持するCert構造体へのポインタ

See:

Return:

  • 0 証明書のRaw-Subject情報の取得に成功した場合に返されます。
  • BAD_FUNC_ARG 証明書の拡張情報の解析でエラーが発生した際に返されます。

Example

Cert myCert;
byte *subjRaw;
// initialize myCert

if(wc_GetSubjectRaw(&subjRaw, &myCert) != 0) {
    // error setting subject
}

function wc_SetAltNames

int wc_SetAltNames(
    Cert * cert,
    const char * file
)

この関数は引数で与えられたPEM形式の証明書の主体者の別名をCert構造体に設定します。 複数のドメインで同一の証明書を使用する際には主体者の別名を付与する機能は有用です。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert 主体者の別名を設定する対象のCert構造体へのポインタ
  • file PEM形式の証明書のファイルパス

See:

Return:

  • 0 証明書の主体者の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。
  • ASN_NO_SIGNER_E CA証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
if(wc_SetSubject(&myCert, ”./path/to/ca-cert.pem”) != 0) {
    // error setting alt names
}

function wc_SetIssuerBuffer

int wc_SetIssuerBuffer(
    Cert * cert,
    const byte * der,
    int derSz
)

この関数はDER形式でバッファに格納されている発行者を証明書の発行者として設定します。 加えて、証明書の事故署名プロパティをfalseに設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert 発行者を設定する対象のCert構造体へのポインタ
  • der DER形式の証明書を格納しているバッファへのポインタ。この証明書の発行者情報が取り出されてcertに設定されます。
  • derSz DER形式の証明書を格納しているバッファのサイズ

See:

Return:

  • 0 証明書の発行者の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。
  • ASN_NO_SIGNER_E CA証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
byte* der;
der = (byte*)malloc(FOURK_BUF);
// initialize der
if(wc_SetIssuerBuffer(&myCert, der, FOURK_BUF) != 0) {
    // error setting issuer
}

function wc_SetIssuerRaw

int wc_SetIssuerRaw(
    Cert * cert,
    const byte * der,
    int derSz
)

この関数はDER形式でバッファに格納されているRaw-Issuer情報を証明書のRaw-Issuer情報として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert Raw-Issuer情報を設定する対象のCert構造体へのポインタ
  • der DER形式の証明書を格納しているバッファへのポインタ。この証明書のRaw-Issuer情報が取り出されてcertに設定されます。
  • derSz DER形式の証明書を格納しているバッファのサイズ

See:

Return:

  • 0 証明書のRaw-Issuer情報の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。
  • ASN_NO_SIGNER_E CA証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
byte* der;
der = (byte*)malloc(FOURK_BUF);
// initialize der
if(wc_SetIssuerRaw(&myCert, der, FOURK_BUF) != 0) {
    // error setting subject
}

function wc_SetSubjectBuffer

int wc_SetSubjectBuffer(
    Cert * cert,
    const byte * der,
    int derSz
)

この関数はDER形式でバッファに格納されている主体者を証明書の主体者として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert 主体者を設定する対象のCert構造体へのポインタ
  • der DER形式の証明書を格納しているバッファへのポインタ。この証明書の主体者が取り出されてcertに設定されます。
  • derSz DER形式の証明書を格納しているバッファのサイズ

See:

Return:

  • 0 証明書の主体者の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。
  • ASN_NO_SIGNER_E CA証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
byte* der;
der = (byte*)malloc(FOURK_BUF);
// initialize der
if(wc_SetSubjectBuffer(&myCert, der, FOURK_BUF) != 0) {
    // error setting subject
}

function wc_SetAltNamesBuffer

int wc_SetAltNamesBuffer(
    Cert * cert,
    const byte * der,
    int derSz
)

この関数はDER形式でバッファに格納されている「別名情報」を証明書の「別名情報」として設定します。 この機能は複数ドメインを一つの証明書を使ってセキュアにする際に有用です。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert 別名情報を設定する対象のCert構造体へのポインタ
  • der DER形式の証明書を格納しているバッファへのポインタ。この証明書の別名情報が取り出されてcertに設定されます。
  • derSz DER形式の証明書を格納しているバッファのサイズ

See:

Return:

  • 0 証明書の別名情報の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。
  • ASN_NO_SIGNER_E CA証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
byte* der;
der = (byte*)malloc(FOURK_BUF);
// initialize der
if(wc_SetAltNamesBuffer(&myCert, der, FOURK_BUF) != 0) {
    // error setting subject
}

function wc_SetDatesBuffer

int wc_SetDatesBuffer(
    Cert * cert,
    const byte * der,
    int derSz
)

この関数はDER形式でバッファに格納されている「有効期間」情報を証明書の「有効期間」情報として設定します。 この関数は証明書への署名に先立ち呼び出される必要があります。

Parameters:

  • cert 有効期間情報を設定する対象のCert構造体へのポインタ
  • der DER形式の証明書を格納しているバッファへのポインタ。この証明書の有効期間情報が取り出されてcertに設定されます。
  • derSz DER形式の証明書を格納しているバッファのサイズ

See: wc_InitCert

Return:

  • 0 証明書の有効期間情報の設定に成功した場合に返されます。
  • MEMORY_E XMALLOCでメモリの確保に失敗した際に返されます。
  • ASN_PARSE_E 証明書のヘッダーファイルの解析に失敗した際に返されます。
  • ASN_OBJECT_ID_E 証明書の暗号タイプの解析でエラーが発生した際に返されます。
  • ASN_EXPECT_0_E 証明書の暗号化仕様にフォーマットエラーが検出された際に返されます。
  • 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証明書の主体者を検証することができない場合に返されます。
  • ASN_NO_SIGNER_E CA証明書の主体者を検証することができない場合に返されます。

Example

Cert myCert;
// initialize myCert
byte* der;
der = (byte*)malloc(FOURK_BUF);
// initialize der
if(wc_SetDatesBuffer(&myCert, der, FOURK_BUF) != 0) {
    // error setting subject
}

function wc_SetAuthKeyIdFromPublicKey

int wc_SetAuthKeyIdFromPublicKey(
    Cert * cert,
    RsaKey * rsakey,
    ecc_key * eckey
)

この関数は指定されたRSAあるいはECC公開鍵の一方から得たAKID(認証者鍵ID)を証明書のAKIDとして設定します。

Parameters:

  • cert AKIDを設定する対象のCert構造体へのポインタ
  • rsakey RsaKey構造体へのポインタ
  • eckey ecc_key構造体へのポインタ

See:

Return:

  • 0 証明書のAKIDの設定に成功した場合に返されます。
  • BAD_FUNC_ARG Cert構造体へのポインタ(cert)がNULLかRsaKey構造体へのポインタ(rsakey)とecc_key構造体へのポインタ(eckey)の両方がNULLである場合に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • PUBLIC_KEY_E 公開鍵の取得に失敗した際に返されます。

Example

Cert myCert;
RsaKey keypub;

wc_InitRsaKey(&keypub, 0);

if (wc_SetAuthKeyIdFromPublicKey(&myCert, &keypub, NULL) != 0)
{
    // Handle error
}

function wc_SetAuthKeyIdFromCert

int wc_SetAuthKeyIdFromCert(
    Cert * cert,
    const byte * der,
    int derSz
)

この関数はDER形式でバッファに格納された証明書から得たAKID(認証者鍵ID)を証明書のAKIDとして設定します。

Parameters:

  • cert AKIDを設定する対象のCert構造体へのポインタ。
  • der DER形式の証明書を格納しているバッファへのポインタ。
  • derSz DER形式の証明書を格納しているバッファのサイズ。

See:

Return:

  • 0 証明書のAKIDの設定に成功した場合に返されます。
  • BAD_FUNC_ARG 引数のいずれかがNULL,あるいはderSzが0より小さい場合に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • ASN_NO_SKID 認証者鍵IDが見つからない場合に返されます。

Example

Cert some_cert;
byte some_der[] = { // Initialize a DER buffer };
wc_InitCert(&some_cert);
if(wc_SetAuthKeyIdFromCert(&some_cert, some_der, sizeof(some_der) != 0)
{
    // Handle error
}

function wc_SetAuthKeyId

int wc_SetAuthKeyId(
    Cert * cert,
    const char * file
)

この関数はPEM形式の証明書から得たAKID(認証者鍵ID)を証明書のAKIDとして設定します。

Parameters:

  • cert AKIDを設定する対象のCert構造体へのポインタ。
  • file PEM形式の証明書ファイルへのファイルパス

See:

Return:

  • 0 証明書のAKIDの設定に成功した場合に返されます。
  • BAD_FUNC_ARG 引数のいずれかがNULLの場合に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。

Example

char* file_name = "/path/to/file";
cert some_cert;
wc_InitCert(&some_cert);

if(wc_SetAuthKeyId(&some_cert, file_name) != 0)
{
    // Handle Error
}

function wc_SetSubjectKeyIdFromPublicKey

int wc_SetSubjectKeyIdFromPublicKey(
    Cert * cert,
    RsaKey * rsakey,
    ecc_key * eckey
)

この関数は指定されたRSAあるいはECC公開鍵の一方から得たSKID(主体者鍵ID)を証明書のSKIDとして設定します。

Parameters:

  • cert SKIDを設定する対象のCert構造体へのポインタ
  • rsakey RsaKey構造体へのポインタ
  • eckey ecc_key構造体へのポインタ

See: wc_SetSubjectKeyId

Return:

  • 0 証明書のSKIDの設定に成功した場合に返されます。
  • BAD_FUNC_ARG Cert構造体へのポインタ(cert)がNULLかRsaKey構造体へのポインタ(rsakey)とecc_key構造体へのポインタ(eckey)の両方がNULLである場合に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • PUBLIC_KEY_E 公開鍵の取得に失敗した際に返されます。

Example

Cert some_cert;
RsaKey some_key;
wc_InitCert(&some_cert);
wc_InitRsaKey(&some_key);

if(wc_SetSubjectKeyIdFromPublicKey(&some_cert,&some_key, NULL) != 0)
{
    // Handle Error
}

function wc_SetSubjectKeyId

int wc_SetSubjectKeyId(
    Cert * cert,
    const char * file
)

この関数はPEM形式の証明書から得たSKID(主体者鍵ID)を証明書のSKIDとして設定します。 引数は両方が与えられることが必要です。

Parameters:

  • cert SKIDを設定する対象のCert構造体へのポインタ。
  • file PEM形式の証明書ファイルへのファイルパス

See: wc_SetSubjectKeyIdFromPublicKey

Return:

  • 0 証明書のSKIDの設定に成功した場合に返されます。
  • BAD_FUNC_ARG 引数のいずれかがNULLの場合に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • PUBLIC_KEY_E 公開鍵のデコードに失敗した際に返されます。

Example

const char* file_name = "path/to/file";
Cert some_cert;
wc_InitCert(&some_cert);

if(wc_SetSubjectKeyId(&some_cert, file_name) != 0)
{
    // Handle Error
}

function wc_PemPubKeyToDer

int wc_PemPubKeyToDer(
    const char * fileName,
    unsigned char * derBuf,
    int derSz
)

PEM形式の鍵ファイルをロードしDER形式に変換してバッファに出力します。

Parameters:

  • fileName PEM形式のファイルパス
  • derBuf DER形式鍵を出力する先のバッファ
  • derSz 出力先バッファのサイズ

See: wc_PubKeyPemToDer

Return:

  • 0 処理成功時に返されます。
  • <0 エラー発生時に返されます。
  • SSL_BAD_FILE ファイルのオープンに問題が生じた際に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • BUFFER_E 与えられた出力バッファderBufが結果を保持するのに十分な大きさがない場合に返されます。

Example

char* some_file = "filename";
unsigned char der[];

if(wc_PemPubKeyToDer(some_file, der, sizeof(der)) != 0)
{
    //Handle Error
}

function wc_PubKeyPemToDer

int wc_PubKeyPemToDer(
    const unsigned char * pem,
    int pemSz,
    unsigned char * buff,
    int buffSz
)

PEM形式の鍵データをDER形式に変換してバッファに出力し、出力バイト数あるいは負のエラー値を返します。

Parameters:

  • pem PEM形式の鍵を含んだバッファへのポインタ
  • pemSz PEM形式の鍵を含んだバッファのサイズ
  • buff 出力先バッファへのポインタ
  • buffSz 出力先バッファのサイズ

See: wc_PemPubKeyToDer

Return:

  • 0 処理成功時には出力したバイト数が返されます。

  • BAD_FUNC_ARG 引数のpem, buff, あるいは buffSz のいずれかばNULLの場合に返されます。
  • <0 エラーが発生した際に返されます。

Example

byte some_pem[] = { Initialize with PEM key }
unsigned char out_buffer[1024]; // Ensure buffer is large enough to fit DER

if(wc_PubKeyPemToDer(some_pem, sizeof(some_pem), out_buffer,
sizeof(out_buffer)) < 0)
{
    // Handle error
}

function wc_PemCertToDer

int wc_PemCertToDer(
    const char * fileName,
    unsigned char * derBuf,
    int derSz
)

この関数はPEM形式の証明書をDER形式に変換し、与えられたバッファに出力します。

Parameters:

  • fileName PEM形式のファイルパス
  • derBuf DER形式証明書を出力する先のバッファへのポインタ
  • derSz DER形式証明書を出力する先のバッファのサイズ

See: none

Return:

  • 処理成功時には出力したバイト数が返されます。
  • BUFFER_E 与えられた出力バッファderBufが結果を保持するのに十分な大きさがない場合に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。

Example

char * file = “./certs/client-cert.pem”;
int derSz;
byte* der = (byte*)XMALLOC((8*1024), NULL, DYNAMIC_TYPE_CERT);

derSz = wc_PemCertToDer(file, der, (8*1024));
if (derSz <= 0) {
    //PemCertToDer error
}

function wc_DerToPem

int wc_DerToPem(
    const byte * der,
    word32 derSz,
    byte * output,
    word32 outputSz,
    int type
)

この関数はバッファで与えられたDER形式の証明書をPEM形式に変換し、与えられた出力用バッファに出力します。 この関数は入力バッファと出力バッファを共用することはできません。両バッファは必ず別のものを用意してください。

Parameters:

  • der DER形式証明書データを保持するバッファへのポインタ
  • derSz DER形式証明書データのサイズ
  • output PEM形式証明書データを出力する先のバッファへのポインタ
  • outSz PEM形式証明書データを出力する先のバッファのサイズ
  • type 変換する証明書のタイプ。次のタイプが指定可: CERT_TYPE, PRIVATEKEY_TYPE, ECC_PRIVATEKEY_TYPE, and CERTREQ_TYPE.

See: wc_PemCertToDer

Return:

  • 処理成功時には変換後のPEM形式データのサイズを返します。
  • BAD_FUNC_ARG DER形式証明書データの解析中にエラーが発生した際、あるいはPEM形式に変換の際にエラーが発生した際に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • ASN_INPUT_E Base64エンコーディングエラーが検出された際に返されます。
  • BUFFER_E 与えられた出力バッファが結果を保持するのに十分な大きさがない場合に返されます。

Example

byte* der;
// initialize der with certificate
byte* pemFormatted[FOURK_BUF];

word32 pemSz;
pemSz = wc_DerToPem(der, derSz,pemFormatted,FOURK_BUF, CERT_TYPE);

function wc_DerToPemEx

int wc_DerToPemEx(
    const byte * der,
    word32 derSz,
    byte * output,
    word32 outputSz,
    byte * cipherIno,
    int type
)

この関数はDER形式証明書を入力バッファから読み出し、PEM形式に変換して出力バッファに出力します。 この関数は入力バッファと出力バッファを共用することはできません。両バッファは必ず別のものを用意してください。 追加の暗号情報を指定することができます。

Parameters:

  • der DER形式証明書データを保持するバッファへのポインタ
  • derSz DER形式証明書データのサイズ
  • output PEM形式証明書データを出力する先のバッファへのポインタ
  • outSz PEM形式証明書データを出力する先のバッファのサイズ
  • cipher_inf 追加の暗号情報
  • type 生成する証明書タイプ。指定可能なタイプ: CERT_TYPE, PRIVATEKEY_TYPE, ECC_PRIVATEKEY_TYPE と CERTREQ_TYPE

See: wc_PemCertToDer

Return:

  • 処理成功時には変換後のPEM形式データのサイズを返します。
  • BAD_FUNC_ARG Returned DER形式証明書データの解析中にエラーが発生した際、あるいはPEM形式に変換の際にエラーが発生した際に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • ASN_INPUT_E Base64エンコーディングエラーが検出された際に返されます。
  • BUFFER_E 与えられた出力バッファが結果を保持するのに十分な大きさがない場合に返されます。

Example

byte* der;
// initialize der with certificate
byte* pemFormatted[FOURK_BUF];

word32 pemSz;
byte* cipher_info[] { Additional cipher info. }
pemSz = wc_DerToPemEx(der, derSz, pemFormatted, FOURK_BUF, cipher_info, CERT_TYPE);

function wc_EccPrivateKeyDecode

int wc_EccPrivateKeyDecode(
    const byte * input,
    word32 * inOutIdx,
    ecc_key * key,
    word32 inSz
)

この関数はECC秘密鍵を入力バッファから読み込み、解析の後ecc_key構造体を作成してそこに鍵を格納します。

Parameters:

  • input 入力となる秘密鍵データを含んでいるバッファへのポインタ
  • inOutIdx word32型変数で内容として入力バッファの処理開始位置を先頭からのインデクス値として保持している。
  • key デコードされた秘密鍵が格納される初期化済みのecc_key構造体へのポインタ
  • inSz 秘密鍵を含んでいる入力バッファのサイズ

See: wc_RSA_PrivateKeyDecode

Return:

  • 0 秘密鍵のデコードと結果のecc_key構造体への格納成功時に返されます。
  • ASN_PARSE_E 入力バッファの解析あるいは結果の格納時にエラーが発生した場合に返されます。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • BUFFER_E 入力された証明書が最大証明書サイズより大きかった場合に返されます。
  • ASN_OBJECT_ID_E 証明書が無効なオブジェクトIDを含んでいる場合に返されます。
  • ECC_CURVE_OID_E 与えられた秘密鍵のECC曲線がサポートされていない場合に返されます。
  • ECC_BAD_ARG_E ECC秘密鍵のフォーマットにエラーがある場合に返されます。
  • NOT_COMPILED_IN 秘密鍵が圧縮されていて圧縮鍵が提供されていない場合に返されます。
  • MP_MEM 秘密鍵の解析で使用される数学ライブラリがエラーを検出した場合に返されます。
  • MP_VAL 秘密鍵の解析で使用される数学ライブラリがエラーを検出した場合に返されます。
  • MP_RANGE 秘密鍵の解析で使用される数学ライブラリがエラーを検出した場合に返されます。

Example

int ret, idx=0;
ecc_key key; // to store key in

byte* tmp; // tmp buffer to read key from
tmp = (byte*) malloc(FOURK_BUF);

int inSz;
inSz = fread(tmp, 1, FOURK_BUF, privateKeyFile);
// read key into tmp buffer

wc_ecc_init(&key); // initialize key
ret = wc_EccPrivateKeyDecode(tmp, &idx, &key, (word32)inSz);
if(ret < 0) {
    // error decoding ecc key
}

function wc_EccKeyToDer

int wc_EccKeyToDer(
    ecc_key * key,
    byte * output,
    word32 inLen
)

この関数はECC秘密鍵をDER形式でバッファに出力します。

Parameters:

  • key 入力となるECC秘密鍵データを含んでいるバッファへのポインタ
  • output DER形式のECC秘密鍵を出力する先のバッファへのポインタ
  • inLen DER形式のECC秘密鍵を出力する先のバッファのサイズ

See: wc_RsaKeyToDer

Return:

  • ECC秘密鍵をDER形式での出力に成功した場合にはバッファへ出力したサイズを返します。
  • BAD_FUNC_ARG 出力バッファoutputがNULLあるいはinLenがゼロの場合に返します。
  • MEMORY_E メモリの確保に失敗した際に返されます。
  • BUFFER_E 出力バッファが必要量より小さい
  • ASN_UNKNOWN_OID_E ECC秘密鍵が未知のタイプの場合に返します。
  • MP_MEM 秘密鍵の解析で使用される数学ライブラリがエラーを検出した場合に返されます。
  • MP_VAL 秘密鍵の解析で使用される数学ライブラリがエラーを検出した場合に返されます。
  • MP_RANGE 秘密鍵の解析で使用される数学ライブラリがエラーを検出した場合に返されます。

Example

int derSz;
ecc_key key;
// initialize and make key
byte der[FOURK_BUF];
// store der formatted key here

derSz = wc_EccKeyToDer(&key, der, FOURK_BUF);
if(derSz < 0) {
    // error converting ecc key to der buffer
}

function wc_EccPublicKeyDecode

int wc_EccPublicKeyDecode(
    const byte * input,
    word32 * inOutIdx,
    ecc_key * key,
    word32 inSz
)

この関数は入力バッファのECC公開鍵をASNシーケンスをデコードして取り出します。

Parameters:

  • input DER形式の公開鍵を含んだバッファへのポインタ
  • inOutIdx バッファの読み出し位置インデクス値を保持している変数へのポインタ(入力時)。 出力時にはこの変数に解析済みのバッファのインデクス値が格納されます。
  • key ecc_key構造体へのポインタ
  • inSz 入力バッファのサイズ

See: wc_ecc_import_x963

Return:

  • 0 処理成功時に返します。
  • BAD_FUNC_ARG Returns いずれかの引数がNULLの場合に返します。
  • ASN_PARSE_E 解析中にエラーが発生した場合に返します。
  • ASN_ECC_KEY_E 鍵のインポートでエラーが発生した場合に返します。 発生理由についてはwc_ecc_import_x963()を参照のこと。

Example

int ret;
word32 idx = 0;
byte buff[] = { // initialize with key };
ecc_key pubKey;
wc_ecc_init(&pubKey);
if ( wc_EccPublicKeyDecode(buff, &idx, &pubKey, sizeof(buff)) != 0) {
        // error decoding key
}

function wc_EccPublicKeyToDer

int wc_EccPublicKeyToDer(
    ecc_key * key,
    byte * output,
    word32 inLen,
    int with_AlgCurve
)

この関数はECC公開鍵をDER形式に変換します。 処理したバッファのサイズを返します。変換して得られるDER形式のECC公開鍵は出力バッファに格納されます。 AlgCurveフラグの指定により、アルゴリズムと曲線情報をヘッダーに含めることができます。

Parameters:

  • key ecc_key構造体へのポインタ
  • output 出力バッファへのポインタ
  • inLen 出力バッファのサイズ
  • with_AlgCurve アルゴリズムと曲線情報をヘッダーに含める際には1を指定

See:

Return:

  • 成功時には処理したバッファのサイズを返します。
  • BAD_FUNC_ARG 出力バッファoutputあるいはecc_key構造体keyがNULLの場合に返します。
  • LENGTH_ONLY_E ECC公開鍵のサイズ取得に失敗した場合に返します。
  • BUFFER_E 出力バッファが必要量より小さい場合に返します。

Example

ecc_key key;
wc_ecc_init(&key);
WC_RNG rng;
wc_InitRng(&rng);
wc_ecc_make_key(&rng, 32, &key);
int derSz = // Some appropriate size for der;
byte der[derSz];

if(wc_EccPublicKeyToDer(&key, der, derSz, 1) < 0)
{
    // Error converting ECC public key to der
}

function wc_EccPublicKeyToDer_ex

int wc_EccPublicKeyToDer_ex(
    ecc_key * key,
    byte * output,
    word32 inLen,
    int with_AlgCurve,
    int comp
)

この関数はECC公開鍵をDER形式に変換します。 処理したバッファサイズを返します。変換されたDER形式のECC公開鍵は出力バッファに格納されます。 AlgCurveフラグの指定により、アルゴリズムと曲線情報をヘッダーに含めることができます。 compパラメータは公開鍵を圧縮して出力するか否かを指定します。

Parameters:

  • key ecc_key構造体へのポインタ
  • output 出力バッファへのポインタ
  • inLen 出力バッファのサイズ
  • with_AlgCurve アルゴリズムと曲線情報をヘッダーに含める際には1を指定
  • comp 非ゼロ値の指定時にはECC公開鍵は圧縮形式で出力されます。ゼロが指定された場合には非圧縮で出力されます。

See:

Return:

  • 0 成功時には処理したバッファのサイズを返します。

  • BAD_FUNC_ARG 出力バッファoutputあるいはecc_key構造体keyがNULLの場合に返します。
  • LENGTH_ONLY_E ECC公開鍵のサイズ取得に失敗した場合に返します。
  • BUFFER_E 出力バッファが必要量より小さい場合に返します。

Example

ecc_key key;
wc_ecc_init(&key);
WC_RNG rng;
wc_InitRng(&rng);
wc_ecc_make_key(&rng, 32, &key);
int derSz = // Some appropriate size for der;
byte der[derSz];

// Write out a compressed ECC key
if(wc_EccPublicKeyToDer_ex(&key, der, derSz, 1, 1) < 0)
{
    // Error converting ECC public key to der
}

function wc_EncodeSignature

word32 wc_EncodeSignature(
    byte * out,
    const byte * digest,
    word32 digSz,
    int hashOID
)

この関数はデジタル署名をエンコードして出力バッファに出力し、生成された署名のサイズを返します。

Parameters:

  • out エンコードした署名データを出力する先のバッファへのポインタ
  • digest 署名データのエンコードに使用するダイジェストへのポインタ
  • digSz ダイジェストを含んでいるバッファのサイズ
  • hashOID ハッシュタイプを示すオブジェクトID。有効な値は: SHAh, SHA256h, SHA384h, SHA512h, MD2h, MD5h, DESb, DES3b, CTC_MD5wRSA, CTC_SHAwRSA, CTC_SHA256wRSA, CTC_SHA384wRSA, CTC_SHA512wRSA, CTC_SHAwECDSA, CTC_SHA256wECDSA, CTC_SHA384wECDSA, と CTC_SHA512wECDSA。

See: none

Return: 成功時には署名を出力バッファに出力し、出力したサイズを返します。

int signSz;
byte encodedSig[MAX_ENCODED_SIG_SZ];
Sha256 sha256;
// initialize sha256 for hashing

byte* dig = = (byte*)malloc(WC_SHA256_DIGEST_SIZE);
// perform hashing and hash updating so dig stores SHA-256 hash
// (see wc_InitSha256, wc_Sha256Update and wc_Sha256Final)
signSz = wc_EncodeSignature(encodedSig, dig, WC_SHA256_DIGEST_SIZE, SHA256h);

function wc_GetCTC_HashOID

int wc_GetCTC_HashOID(
    int type
)

この関数はハッシュタイプに対応したハッシュOIDを返します。 例えば、ハッシュタイプが"WC_SHA512"の場合、この関数は"SHA512h"を対応するハッシュOIDとして返します。

Parameters:

  • type ハッシュタイプ。指定可能なタイプ: WC_MD5, WC_SHA, WC_SHA256, WC_SHA384, WC_SHA512, WC_SHA3_224, WC_SHA3_256, WC_SHA3_384, WC_SHA3_512

See: none

Return:

  • 成功時には指定されたハッシュタイプと対応するハッシュOIDを返します。
  • 0 認識できないハッシュタイプが引数として指定された場合に返します。

Example

int hashOID;

hashOID = wc_GetCTC_HashOID(WC_SHA512);
if (hashOID == 0) {
    // WOLFSSL_SHA512 not defined
}

function wc_SetCert_Free

void wc_SetCert_Free(
    Cert * cert
)

この関数はキャッシュされていたCert構造体で使用されたメモリとリソースをクリーンアップします。 WOLFSSL_CERT_GEN_CACHEが定義されている場合にはDecodedCert構造体がCert構造体内部にキャッシュされ、後続するset系関数の呼び出しの都度DecodedCert構造体がパースされることを防ぎます。

Parameters:

  • cert 未初期化のCert構造体へのポインタ

See:

Return:

  • 0 成功時に返されます。
  • BAD_FUNC_ARG 引数として無効な値が渡された場合に返されます。

Example

Cert cert; // Initialized certificate structure

wc_SetCert_Free(&cert);

function wc_GetPkcs8TraditionalOffset

int wc_GetPkcs8TraditionalOffset(
    byte * input,
    word32 * inOutIdx,
    word32 sz
)

この関数はPKCS#8の暗号化されていないバッファ内部の従来の秘密鍵の開始位置を検出して返します。

Parameters:

  • input PKCS#8の暗号化されていない秘密鍵を保持するバッファへのポインタ
  • inOutIdx バッファのインデクス位置を保持する変数へのポインタ。入力時にはこの変数の内容はバッファ内部のPKCS#8の開始位置を示します。出力時には、秘密鍵の先頭位置を保持します。
  • sz 入力バッファのサイズ

See:

Return:

  • 成功時には従来の秘密鍵の長さを返します。
  • エラー時には負の整数値を返します。

Example

byte* pkcs8Buf; // Buffer containing PKCS#8 key.
word32 idx = 0;
word32 sz; // Size of pkcs8Buf.
...
ret = wc_GetPkcs8TraditionalOffset(pkcs8Buf, &idx, sz);
// pkcs8Buf + idx is now the beginning of the traditional private key bytes.

function wc_CreatePKCS8Key

int wc_CreatePKCS8Key(
    byte * out,
    word32 * outSz,
    byte * key,
    word32 keySz,
    int algoID,
    const byte * curveOID,
    word32 oidSz
)

この関数はDER形式の秘密鍵を入力とし、RKCS#8形式に変換します。 また、PKCS#12のシュロ―ディットキーバッグの作成にも使用できます。RFC5208を参照のこと。

Parameters:

  • out 結果の出力先バッファへのポインタ。NULLの場合には必要な出力先バッファのサイズがoutSzに格納されます。
  • outSz 出力先バッファのサイズ
  • key 従来のDER形式の秘密鍵を含むバッファへのポインタ
  • keySz 秘密鍵を含むバッファのサイズ
  • algoID アルゴリズムID (RSAk等の)
  • curveOID ECC曲線OID。RSA鍵を使用する場合にはNULLにすること。
  • oidSz ECC曲線OIDのサイズ。curveOIDがNULLの場合には0にすること。

See:

Return:

  • 成功時には出力されたPKCS#8 鍵のサイズを返します。
  • LENGTH_ONLY_E 出力先バッファoutがNULLとして渡された場合にはこのエラーコードが返され、outSzに必要な出力バッファのサイズが格納されます。
  • エラー時には負の整数値が返されます。

Example

ecc_key eccKey;              // wolfSSL ECC key object.
byte* der;                   // DER-encoded ECC key.
word32 derSize;              // Size of der.
const byte* curveOid = NULL; // OID of curve used by eccKey.
word32 curveOidSz = 0;       // Size of curve OID.
byte* pkcs8;                 // Output buffer for PKCS#8 key.
word32 pkcs8Sz;              // Size of output buffer.

derSize = wc_EccKeyDerSize(&eccKey, 1);
...
derSize = wc_EccKeyToDer(&eccKey, der, derSize);
...
ret = wc_ecc_get_oid(eccKey.dp->oidSum, &curveOid, &curveOidSz);
...
ret = wc_CreatePKCS8Key(NULL, &pkcs8Sz, der,
    derSize, ECDSAk, curveOid, curveOidSz); // Get size needed in pkcs8Sz.
...
ret = wc_CreatePKCS8Key(pkcs8, &pkcs8Sz, der,
    derSize, ECDSAk, curveOid, curveOidSz);

function wc_EncryptPKCS8Key

int wc_EncryptPKCS8Key(
    byte * key,
    word32 keySz,
    byte * out,
    word32 * outSz,
    const char * password,
    int passwordSz,
    int vPKCS,
    int pbeOid,
    int encAlgId,
    byte * salt,
    word32 saltSz,
    int itt,
    WC_RNG * rng,
    void * heap
)

この関数は暗号化されていないPKCS#8のDER形式の鍵(例えばwc_CreatePKCS8Keyで生成された鍵)を受け取り、PKCS#8 暗号化形式に変換します。 結果として得られた暗号化鍵はwc_DecryptPKCS8Keyを使って復号できます。RFC5208を参照してください。

Parameters:

  • key 従来のDER形式の鍵を含んだバッファへのポインタ
  • keySz 鍵を含んだバッファのサイズ
  • out 出力結果を格納する先のバッファへのポインタ。NULLの場合には必要な出力先バッファのサイズがoutSzに格納されます。
  • outSz 出力先バッファのサイズ
  • password パスワードベース暗号化アルゴリズムに使用されるパスワード
  • passwordSz パスワードのサイズ(NULL終端文字は含まない)
  • vPKCS 使用するPKCSのバージョン番号。1 はPKCS12 かPKCS5。
  • pbeOid パスワードベース暗号化スキームのOID(PBES2 あるいはRFC2898 A.3にあるOIDの一つ)
  • encAlgId 暗号化アルゴリズムID(例えばAES256CBCb)。
  • salt ソルト。NULLの場合はランダムに選定したソルトが使用されます。
  • saltSz ソルトサイズ。saltにNULLを渡した場合には0を指定できます。
  • itt 鍵導出のための繰り返し回数
  • rng 初期化済みのWC_RNG構造体へのポインタ
  • heap 動的メモリ確保のためのヒープ。NULL指定も可。

See:

Return:

  • 成功時には出力先バッファに出力された暗号化鍵のサイズを返します。
  • LENGTH_ONLY_E 出力先バッファoutがNULLとして渡された場合にはこのエラーコードが返され、outSzに必要な出力バッファのサイズが格納されます。
  • エラー時には負の整数値が返されます。

Example

byte* pkcs8;          // Unencrypted PKCS#8 key.
word32 pkcs8Sz;       // Size of pkcs8.
byte* pkcs8Enc;       // Encrypted PKCS#8 key.
word32 pkcs8EncSz;    // Size of pkcs8Enc.
const char* password; // Password to use for encryption.
int passwordSz;       // Length of password (not including NULL terminator).
WC_RNG rng;

// The following produces an encrypted version of pkcs8 in pkcs8Enc. The
// encryption uses password-based encryption scheme 2 (PBE2) from PKCS#5 and
// the AES cipher in CBC mode with a 256-bit key. See RFC 8018 for more on
// PKCS#5.
ret = wc_EncryptPKCS8Key(pkcs8, pkcs8Sz, pkcs8Enc, &pkcs8EncSz, password,
        passwordSz, PKCS5, PBES2, AES256CBCb, NULL, 0,
        WC_PKCS12_ITT_DEFAULT, &rng, NULL);

function wc_DecryptPKCS8Key

int wc_DecryptPKCS8Key(
    byte * input,
    word32 sz,
    const char * password,
    int passwordSz
)

この関数は暗号化されたPKCS#8のDER形式の鍵を受け取り、復号してPKCS#8 DER形式に変換します。 wc_EncryptPKCS8Keyによって行われた暗号化を元に戻します。RFC5208を参照してください。 入力データは復号データによって上書きされます。

Parameters:

  • input 入力時には暗号化されたPKCS#8鍵データを含みます。出力時には復号されたPKCS#8鍵データを含みます。
  • sz 入力バッファのサイズ
  • password 鍵を暗号化する際のパスワード
  • passwordSz パスワードのサイズ(NULL終端文字は含まない)

See:

Return:

  • 成功時には復号データの長さを返します。
  • エラー発生時には負の整数値を返します。

Example

byte* pkcs8Enc;       // Encrypted PKCS#8 key made with wc_EncryptPKCS8Key.
word32 pkcs8EncSz;    // Size of pkcs8Enc.
const char* password; // Password to use for decryption.
int passwordSz;       // Length of password (not including NULL terminator).

ret = wc_DecryptPKCS8Key(pkcs8Enc, pkcs8EncSz, password, passwordSz);

function wc_CreateEncryptedPKCS8Key

int wc_CreateEncryptedPKCS8Key(
    byte * key,
    word32 keySz,
    byte * out,
    word32 * outSz,
    const char * password,
    int passwordSz,
    int vPKCS,
    int pbeOid,
    int encAlgId,
    byte * salt,
    word32 saltSz,
    int itt,
    WC_RNG * rng,
    void * heap
)

この関数は従来のDER形式の鍵をPKCS#8フォーマットに変換し、暗号化を行います。 この処理にはwc_CreatePKCS8Keyとwc_EncryptPKCS8Keyを使用します。

Parameters:

  • key 従来のDER形式の鍵を含んだバッファへのポインタ
  • keySz 鍵を含んだバッファのサイズ
  • out 結果を出力する先のバッファへのポインタ。NULLが指定された場合には、必要なバッファサイズがoutSzに格納されます。
  • outSz 結果を出力する先のバッファのサイズ
  • password パスワードベース暗号アルゴリズムに使用されるパスワード
  • passwordSz パスワードのサイズ(NULL終端文字は含まない)
  • vPKCS 使用するPKCSのバージョン番号。1 はPKCS12 かPKCS5。
  • pbeOid パスワードベース暗号化スキームのOID(PBES2 あるいはRFC2898 A.3にあるOIDの一つ)
  • encAlgId 暗号化アルゴリズムID(例えばAES256CBCb)。
  • salt ソルト。NULLの場合はランダムに選定したソルトが使用されます。
  • saltSz ソルトサイズ。saltにNULLを渡した場合には0を指定できます。
  • itt 鍵導出のための繰り返し回数
  • rng 初期化済みのWC_RNG構造体へのポインタ
  • heap 動的メモリ確保のためのヒープ。NULL指定も可。

See:

Return:

  • 成功時には出力した暗号化鍵のサイズを返します。
  • LENGTH_ONLY_E もし出力用バッファoutにNULLが渡された場合に返されます。その際にはoutSz変数に必要な出力用バッファサイズを格納します。
  • エラー発生時には負の整数値を返します。

Example

byte* key;            // Traditional private key (DER formatted).
word32 keySz;         // Size of key.
byte* pkcs8Enc;       // Encrypted PKCS#8 key.
word32 pkcs8EncSz;    // Size of pkcs8Enc.
const char* password; // Password to use for encryption.
int passwordSz;       // Length of password (not including NULL terminator).
WC_RNG rng;

// The following produces an encrypted, PKCS#8 version of key in pkcs8Enc.
// The encryption uses password-based encryption scheme 2 (PBE2) from PKCS#5
// and the AES cipher in CBC mode with a 256-bit key. See RFC 8018 for more
// on PKCS#5.
ret = wc_CreateEncryptedPKCS8Key(key, keySz, pkcs8Enc, &pkcs8EncSz,
        password, passwordSz, PKCS5, PBES2, AES256CBCb, NULL, 0,
        WC_PKCS12_ITT_DEFAULT, &rng, NULL);

function wc_InitDecodedCert

void wc_InitDecodedCert(
    struct DecodedCert * cert,
    const byte * source,
    word32 inSz,
    void * heap
)

この関数はcert引数で与えられたDecodedCert構造体を初期化します。 DER形式の証明書を含んでいるsource引数の指すポインタから証明書サイズinSzの長さを内部に保存します。 この関数の後に呼び出されるwc_ParseCertによって証明書が解析されます。

Parameters:

  • cert DecodedCert構造体へのポインタ
  • source DER形式の証明書データへのポインタ
  • inSz 証明書データのサイズ(バイト数)
  • heap 動的メモリ確保のためのヒープ。NULL指定も可。

See:

Example

DecodedCert decodedCert; // Decoded certificate object.
byte* certBuf;           // DER-encoded certificate buffer.
word32 certBufSz;        // Size of certBuf in bytes.

wc_InitDecodedCert(&decodedCert, certBuf, certBufSz, NULL);

function wc_ParseCert

int wc_ParseCert(
    DecodedCert * cert,
    int type,
    int verify,
    void * cm
)

この関数はDecodedCert構造体に保存されているDER形式の証明書を解析し、その構造体に各種フィールドを設定します。 DecodedCert構造体はwc_InitDecodedCertを呼び出して初期化しておく必要があります。 この関数はオプションでCertificateManager構造体へのポインタを受け取り、CAが証明書マネジャーで検索できた場合には、 そのCAに関する情報もDecodedCert構造体に追加設定します。

Parameters:

  • cert 初期化済みのDecodedCert構造体へのポインタ。
  • type 証明書タイプ。タイプの設定値についてはasn_public.hのCertType enum定義を参照してください。
  • verify 呼び出し側が証明書の検証を求めていることを指示すフラグです。
  • cm CertificateManager構造体へのポインタ。オプションで指定可。NULLでも可。

See:

Return:

  • 0 成功時に返します。
  • エラー発生時には負の整数値を返します。

Example

int ret;
DecodedCert decodedCert; // Decoded certificate object.
byte* certBuf;           // DER-encoded certificate buffer.
word32 certBufSz;        // Size of certBuf in bytes.

wc_InitDecodedCert(&decodedCert, certBuf, certBufSz, NULL);
ret = wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL);
if (ret != 0) {
    fprintf(stderr, "wc_ParseCert failed.\n");
}

function wc_FreeDecodedCert

void wc_FreeDecodedCert(
    struct DecodedCert * cert
)

この関数はwc_InitDecodedCertで初期化済みのDecodedCert構造体を解放します。

Parameters:

  • cert 初期化済みのDecodedCert構造体へのポインタ。

See:

Example

int ret;
DecodedCert decodedCert; // Decoded certificate object.
byte* certBuf;           // DER-encoded certificate buffer.
word32 certBufSz;        // Size of certBuf in bytes.

wc_InitDecodedCert(&decodedCert, certBuf, certBufSz, NULL);
ret = wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL);
if (ret != 0) {
    fprintf(stderr, "wc_ParseCert failed.\n");
}
wc_FreeDecodedCert(&decodedCert);

function wc_SetTimeCb

int wc_SetTimeCb(
    wc_time_cb f
)

この関数はタイムコールバック関数を登録します。wolfSSLが現在時刻を必要としたタイミングでこのコールバックを呼び出します。 このタイムコールバック関数のプロトタイプ(シグネチャ)はC標準ライブラリの"time"関数と同一です。

Parameters:

  • f タイムコールバック関数ポインタ

See: wc_Time

Return: 0 成功時に返します。

Example

int ret = 0;
// Time callback prototype
time_t my_time_cb(time_t* t);
// Register it
ret = wc_SetTimeCb(my_time_cb);
if (ret != 0) {
    // failed to set time callback
}
time_t my_time_cb(time_t* t)
{
    // custom time function
}

function wc_Time

time_t wc_Time(
    time_t * t
)

この関数は現在時刻を取得します。デフォルトでXTIMEマクロ関数を使います。このマクロ関数はプラットフォーム依存です。 ユーザーはこのマクロの代わりにwc_SetTimeCbでタイムコールバック関数を使うように設定することができます

Parameters:

  • t 現在時刻を返却するオプションのtime_t型変数。

See: wc_SetTimeCb

Return: 成功時には現在時刻を返します。

Example

time_t currentTime = 0;
currentTime = wc_Time(NULL);
wc_Time(&currentTime);

function wc_SetCustomExtension

int wc_SetCustomExtension(
    Cert * cert,
    int critical,
    const char * oid,
    const byte * der,
    word32 derSz
)

この関数はX.509証明書にカスタム拡張を追加します。 注: この関数に渡すポインタ引数が保持する内容は証明書が生成されるまで変更されてはいけません。 この関数ではポインタが指す先の内容は別のバッファには複製しません。

Parameters:

  • cert 初期化済みのDecodedCert構造体へのポインタ。
  • critical 0が指定された場合には追加する拡張はクリティカルとはマークされません。 0以外が指定された場合にはクリティカルとマークされます。
  • oid ドット区切りのoid文字列。例えば、"1.2.840.10045.3.1.7"
  • der 拡張情報のDERエンコードされた内容を含むバッファへのポインタ。
  • derSz DERエンコードされた内容を含むバッファのサイズ

See:

Return:

  • 0 成功時に返します。
  • エラー発生時には負の整数値を返します。

Example

int ret = 0;
Cert newCert;
wc_InitCert(&newCert);

// Code to setup subject, public key, issuer, and other things goes here.

ret = wc_SetCustomExtension(&newCert, 1, "1.2.3.4.5",
          (const byte *)"This is a critical extension", 28);
if (ret < 0) {
    // Failed to set the extension.
}

ret = wc_SetCustomExtension(&newCert, 0, "1.2.3.4.6",
          (const byte *)"This is NOT a critical extension", 32)
if (ret < 0) {
    // Failed to set the extension.
}

// Code to sign the certificate and then write it out goes here.

function wc_SetUnknownExtCallback

int wc_SetUnknownExtCallback(
    DecodedCert * cert,
    wc_UnknownExtCallback cb
)

この関数はwolfSSLが証明書の解析中に未知のX.509拡張に遭遇した際に呼び出すコールバック関数を登録します。 コールバック関数のプロトタイプは使用例を参照してください。

Parameters:

  • cert コールバック関数を登録する対象のDecodedCert構造体へのポインタ。
  • cb 登録されるコールバック関数ポインタ

See:

Return:

  • 0 成功時に返します。
  • エラー発生時には負の整数値を返します。

Example

int ret = 0;
// Unknown extension callback prototype
int myUnknownExtCallback(const word16* oid, word32 oidSz, int crit,
                         const unsigned char* der, word32 derSz);

// Register it
ret = wc_SetUnknownExtCallback(cert, myUnknownExtCallback);
if (ret != 0) {
    // failed to set the callback
}

// oid: OIDを構成するドット区切りの数を格納した配列
// oidSz: oid内の値の数
// crit: 拡張がクリティカルとマークされているか
// der: DERエンコードされている拡張の内容
// derSz: 拡張の内容のサイズ
int myCustomExtCallback(const word16* oid, word32 oidSz, int crit,
                        const unsigned char* der, word32 derSz) {

    // 拡張を解析するロジックはここに記述します

    // NOTE: コールバック関数から0を返すとwolfSSLに対してこの拡張を受け入れ可能と
    // 表明することになります。この拡張を処理できると判断できない場合にはエラーを
    // 返してください。クリティカルとマークされている未知の拡張に遭遇した際の標準的
    // な振る舞いはASN_CRIT_EXT_Eを返すことです。
    // 簡潔にするためにこの例ではすべての拡張情報を受け入れ可としていますが、実際には実情に沿うようにロジックを追加してください。

    return 0;
}

function wc_CheckCertSigPubKey

int wc_CheckCertSigPubKey(
    const byte * cert,
    word32 certSz,
    void * heap,
    const byte * pubKey,
    word32 pubKeySz,
    int pubKeyOID
)

この関数はDER形式のX.509 証明書の署名を与えられた公開鍵を使って検証します。 公開鍵はDER形式で全公開鍵情報を含んだものが求められます。

Parameters:

  • cert DER形式のX.509証明書を含んだバッファへのポインタ
  • certSz 証明書を含んだバッファのサイズ
  • heap 動的メモリ確保のためのヒープ。NULL指定も可。
  • pubKey DER形式の公開鍵を含んだバッファへのポインタ
  • pubKeySz 公開鍵を含んだバッファのサイズ
  • pubKeyOID 公開鍵のアルゴリズムを特定するOID(すなわち: ECDSAk, DSAk や RSAk)

Return:

  • 0 成功時に返します。
  • エラー発生時には負の整数値を返します。

function wc_Asn1PrintOptions_Init

int wc_Asn1PrintOptions_Init(
    Asn1PrintOptions * opts
)

この関数はAsn1PrintOptions構造体を初期化します。

Parameters:

  • opts プリントのためのAsn1PrintOptions構造体へのポインタ

See:

Return:

  • 0 成功時に返します。
  • BAD_FUNC_ARG asn1がNULLの場合に返されます。

Example

Asn1PrintOptions opt;

// Initialize ASN.1 print options before use.
wc_Asn1PrintOptions_Init(&opt);

function wc_Asn1PrintOptions_Set

int wc_Asn1PrintOptions_Set(
    Asn1PrintOptions * opts,
    enum Asn1PrintOpt opt,
    word32 val
)

この関数はAsn1PrintOptions構造体にプリント情報を設定します。

Parameters:

  • opts Asn1PrintOptions構造体へのポインタ
  • opt 設定する情報へのポインタ
  • val 設定値

See:

Return:

  • 0 成功時に返します。
  • BAD_FUNC_ARG asn1がNULLの場合に返されます。
  • BAD_FUNC_ARG valが範囲外の場合に返されます。

Example

Asn1PrintOptions opt;

// Initialize ASN.1 print options before use.
wc_Asn1PrintOptions_Init(&opt);
// Set the number of indents when printing tag name to be 1.
wc_Asn1PrintOptions_Set(&opt, ASN1_PRINT_OPT_INDENT, 1);

function wc_Asn1_Init

int wc_Asn1_Init(
    Asn1 * asn1
)

この関数はAsn1構造体を初期化します。

Parameters:

  • asn1 Asn1構造体へのポインタ

See:

Return:

  • 0 成功時に返します。
  • BAD_FUNC_ARG asn1がNULLの場合に返されます。

Example

Asn1 asn1;

// Initialize ASN.1 parse object before use.
wc_Asn1_Init(&asn1);

function wc_Asn1_SetFile

int wc_Asn1_SetFile(
    Asn1 * asn1,
    XFILE file
)

この関数は出力先として使用するファイルをAsn1構造体にセットします。

Parameters:

  • asn1 Asn1構造体へのポインタ
  • file プリント先のファイル

See:

Return:

  • 0 成功時に返します。
  • BAD_FUNC_ARG asn1がNULLの場合に返されます。
  • BAD_FUNC_ARG fileがXBADFILEの場合に返されます。.

Example

Asn1 asn1;

// Initialize ASN.1 parse object before use.
wc_Asn1_Init(&asn1);
// Set standard out to be the file descriptor to write to.
wc_Asn1_SetFile(&asn1, stdout);

function wc_Asn1_PrintAll

int wc_Asn1_PrintAll(
    Asn1 * asn1,
    Asn1PrintOptions * opts,
    unsigned char * data,
    word32 len
)

ASN.1アイテムをプリントします。

Parameters:

  • asn1 Asn1構造体へのポインタ
  • opts Asn1PrintOptions構造体へのポインタ
  • data BER/DER形式のプリント対象データへのポインタ
  • len プリント対象データのサイズ(バイト数)

See:

Return:

  • 0 成功時に返します。
  • BAD_FUNC_ARG asn1かoptsがNULLの場合に返されます。
  • ASN_LEN_E ASN.1アイテムが長すぎる場合に返されます。
  • ASN_DEPTH_E 終了オフセットが無効の場合に返されます。
  • ASN_PARSE_E 全のASN.1アイテムの解析が完了できなかった場合に返されます。
Asn1PrintOptions opts;
Asn1 asn1;
unsigned char data[] = { Initialize with DER/BER data };
word32 len = sizeof(data);

// Initialize ASN.1 print options before use.
wc_Asn1PrintOptions_Init(&opt);
// Set the number of indents when printing tag name to be 1.
wc_Asn1PrintOptions_Set(&opt, ASN1_PRINT_OPT_INDENT, 1);

// Initialize ASN.1 parse object before use.
wc_Asn1_Init(&asn1);
// Set standard out to be the file descriptor to write to.
wc_Asn1_SetFile(&asn1, stdout);
// Print all ASN.1 items in buffer with the specified print options.
wc_Asn1_PrintAll(&asn1, &opts, data, len);

Updated on 2024-11-22 at 02:29:58 +0000