コンテンツにスキップ

wolfSSL証明書と鍵

Functions

Name
int wc_KeyPemToDer(const unsigned char * pem, int pemSz, unsigned char * buff, int buffSz, const char * pass)
PEM形式のキーをDER形式に変換します。
int wc_CertPemToDer(const unsigned char * pem, int pemSz, unsigned char * buff, int buffSz, int type)
この関数は、PEM形式の証明書をDER形式に変換します。OpenSSL関数PemToDerを呼び出します。
int wc_GetPubKeyDerFromCert(struct DecodedCert * cert, byte * derKey, word32 * derKeySz)
この関数は、入力されたDecodedCert構造体からDER形式の公開鍵を取得します。このAPIを呼び出す前に、ユーザーはwc_InitDecodedCert()とwc_ParseCert()を呼び出す必要があります。wc_InitDecodedCert()はDER/ASN.1エンコードされた証明書を受け入れます。PEM証明書をDERに変換するには、wc_InitDecodedCert()を呼び出す前にまずwc_CertPemToDer()を使用してください。
int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX * ctx, const char * file, int format)
この関数は、証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMのいずれかです。適切な使用方法については、exampleを参照してください。
int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX * ctx, const char * file, int format)
この関数は、秘密鍵ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用方法については、exampleを参照してください。
int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX * ctx, const char * file, const char * path)
この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数はディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。
int wolfSSL_CTX_load_verify_locations_ex(WOLFSSL_CTX * ctx, const char * file, const char * path, unsigned int flags)
この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数は、指定されたフラグに基づいてディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。
const char ** wolfSSL_get_system_CA_dirs(word32 * num)
この関数は、wolfSSL_CTX_load_system_CA_certsが呼び出されたときにwolfSSLがシステムCA証明書を検索するディレクトリを表す文字列の配列へのポインタを返します。証明書をアクセス可能なシステムディレクトリに保存しないシステム(Appleプラットフォームなど)では、この関数は常にNULLを返します。
int wolfSSL_CTX_load_system_CA_certs(WOLFSSL_CTX * ctx)
ほとんどのプラットフォーム(LinuxおよびWindowsを含む)において、この関数はOS依存のCA証明書ストアからWOLFSSL_CTXへCA証明書を読み込もうと試みます。読み込まれた証明書は信頼されます。
int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX * ctx, const char * file)
この関数は、証明書チェーンをSSLコンテキスト(WOLFSSL_CTX)に読み込みます。証明書チェーンを含むファイルはfile引数によって提供され、PEM形式の証明書を含む必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。
int wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX * ctx, const char * file, int format)
この関数はwolfSSL_CTX_load_verify_locationsに似ていますが、DER形式のCAファイルをSSLコンテキスト(WOLFSSL_CTX)にロードできます。PEM形式のCAファイルをロードするためにも使用できます。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数で指定されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである可能性があります。複数のCA証明書が同じファイルに含まれている場合、wolfSSLはファイル内で提示された順序でそれらをロードします。format引数は、証明書の形式がSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1(DER)のいずれかであることを指定します。wolfSSL_CTX_load_verify_locationsとは異なり、この関数は指定されたディレクトリパスからのCA証明書のロードを許可しません。この関数は、wolfSSLライブラリがWOLFSSL_DER_LOADを定義してコンパイルされている場合にのみ利用可能です。
void wolfSSL_SetCertCbCtx(WOLFSSL * ssl, void * ctx)
この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。
void wolfSSL_CTX_SetCertCbCtx(WOLFSSL_CTX * ctx, void * userCtx)
この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。
int wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX * ctx, const char * fname)
この関数は、証明書キャッシュをメモリからファイルに書き込みます。
int wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX * ctx, const char * fname)
この関数は、証明書キャッシュをファイルから永続化します。
int wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX * ctx, void * mem, int sz, int * used)
この関数は、証明書キャッシュをメモリに永続化します。
int wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX * ctx)
証明書キャッシュの保存バッファに必要なサイズを返します。
char * wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME * name, char * in, int sz)
この関数はx509の名前をバッファにコピーします。
WOLFSSL_X509_NAME * wolfSSL_X509_get_issuer_name(WOLFSSL_X509 * cert)
この関数は証明書の発行者名を返します。
WOLFSSL_X509_NAME * wolfSSL_X509_get_subject_name(WOLFSSL_X509 * cert)
この関数はWOLFSSL_X509構造体のsubjectメンバーを返します。
int wolfSSL_X509_get_isCA(WOLFSSL_X509 * cert)
WOLFSSL_X509構造体のisCaメンバーをチェックし、その値を返します。
int wolfSSL_X509_NAME_get_text_by_NID(WOLFSSL_X509_NAME * name, int nid, char * buf, int len)
この関数は渡されたNID値に関連するテキストを取得します。
int wolfSSL_X509_get_signature_type(WOLFSSL_X509 * cert)
この関数はWOLFSSL_X509構造体のsigOIDメンバーに格納されている値を返します。
int wolfSSL_X509_get_signature(WOLFSSL_X509 * x509, unsigned char * buf, int * bufSz)
X509署名を取得し、バッファに格納します。
int wolfSSL_X509_STORE_add_cert(WOLFSSL_X509_STORE * store, WOLFSSL_X509 * x509)
この関数はWOLFSSL_X509_STORE構造体に証明書を追加します。
WOLFSSL_STACK * wolfSSL_X509_STORE_CTX_get_chain(WOLFSSL_X509_STORE_CTX * ctx)
この関数はWOLFSSL_X509_STORE_CTX構造体のchain変数のgetter関数です。現在、chainは入力されていません。
int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE * store, unsigned long flag)
この関数は渡されたWOLFSSL_X509_STORE構造体の動作を変更するためのフラグを受け取ります。使用されるフラグの例としてWOLFSSL_CRL_CHECKがあります。
const byte * wolfSSL_X509_notBefore(WOLFSSL_X509 * x509)
この関数は、バイト配列としてエンコードされた証明書の「not before」有効期限を返します。
const byte * wolfSSL_X509_notAfter(WOLFSSL_X509 * x509)
この関数は、バイト配列としてエンコードされた証明書の「not after」有効期限を返します。
void wolfSSL_CTX_set_client_cert_cb(WOLFSSL_CTX * ctx, client_cert_cb cb)
クライアント証明書と秘密鍵を選択するコールバックを設定します。
void wolfSSL_CTX_set_cert_cb(WOLFSSL_CTX * ctx, CertSetupCallback cb, void * arg)
汎用証明書セットアップコールバックを設定します。
const char * wolfSSL_get_psk_identity_hint(const WOLFSSL * )
この関数は、PSKアイデンティティヒントを返します。
const char * wolfSSL_get_psk_identity(const WOLFSSL * )
この関数は、Arrays構造体のclient_identityメンバへの定数ポインタを返します。
int wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX * ctx, const char * hint)
この関数は、hint引数をWOLFSSL_CTX構造体のserver_hintメンバに格納します。
int wolfSSL_use_psk_identity_hint(WOLFSSL * ssl, const char * hint)
この関数は、hint引数をWOLFSSL構造体内のArrays構造体のserver_hintメンバに格納します。
WOLFSSL_X509 * wolfSSL_get_peer_certificate(WOLFSSL * ssl)
この関数は、ピアの証明書を取得します。
WOLFSSL_X509 * wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN * chain, int idx)
この関数は証明書チェーンからインデックス(idx)にあるピアのwolfSSL_X509_certificateを取得します。
char * wolfSSL_X509_get_subjectCN(WOLFSSL_X509 * )
証明書からサブジェクトのコモンネームを返します。
const unsigned char * wolfSSL_X509_get_der(WOLFSSL_X509 * x509, int * outSz)
この関数は、WOLFSSL_X509構造体内のDERエンコードされた証明書を取得します。
WOLFSSL_ASN1_TIME * wolfSSL_X509_get_notAfter(WOLFSSL_X509 * )
この関数は、x509がNULLであるかどうかをチェックし、そうでない場合はx509構造体のnotAfterメンバを返します。
int wolfSSL_X509_version(WOLFSSL_X509 * )
この関数は、X509証明書のバージョンを取得します。
WOLFSSL_X509 * wolfSSL_X509_d2i_fp(WOLFSSL_X509 ** x509, FILE * file)
NO_STDIO_FILESYSTEMが定義されている場合、この関数はヒープメモリを割り当て、WOLFSSL_X509構造体を初期化し、そのポインタを返します。
WOLFSSL_X509 * wolfSSL_X509_load_certificate_file(const char * fname, int format)
この関数は、x509証明書をメモリにロードします。
unsigned char * wolfSSL_X509_get_device_type(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz)
この関数は、x509構造体からデバイスタイプをバッファにコピーします。
unsigned char * wolfSSL_X509_get_hw_type(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz)
この関数は、WOLFSSL_X509構造体のhwTypeメンバをバッファにコピーします。
unsigned char * wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz)
この関数は、x509オブジェクトのhwSerialNumメンバを返します。
int wolfSSL_SetTmpDH(WOLFSSL * ssl, const unsigned char * p, int pSz, const unsigned char * g, int gSz)
サーバDiffie-Hellmanエフェメラルパラメータの設定。この関数は、サーバがDHEを使用する暗号スイートをネゴシエートする場合に使用されるグループパラメータを設定します。
int wolfSSL_SetTmpDH_buffer(WOLFSSL * ssl, const unsigned char * b, long sz, int format)
この関数は、Diffie-HellmanパラメータのラッパーであるwolfSSL_SetTMpDH_buffer_wrapperを呼び出します。
int wolfSSL_SetTmpDH_file(WOLFSSL * ssl, const char * f, int format)
この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。
int wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX * ctx, const unsigned char * p, int pSz, const unsigned char * g, int gSz)
サーバCTX Diffie-Hellmanのパラメータを設定します。
int wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX * ctx, const unsigned char * b, long sz, int format)
wolfSSL_SetTmpDH_buffer_wrapperを呼び出すラッパー関数です。
int wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX * ctx, const char * f, int format)
この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。
int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX * ctx, word16 )
この関数は、WOLFSSL_CTX構造体のminDhKeySzメンバにアクセスして、Diffie_Hellman鍵サイズの最小サイズ(ビット単位)を設定します。
int wolfSSL_SetMinDhKey_Sz(WOLFSSL * ssl, word16 keySz_bits)
WOLFSSL構造体内のDiffie_Hellman鍵の最小サイズ(ビット単位)を設定します。
int wolfSSL_CTX_SetMaxDhKey_Sz(WOLFSSL_CTX * ctx, word16 keySz_bits)
この関数は、WOLFSSL_CTX構造体のmaxDhKeySzメンバにアクセスして、Diffie_Hellman鍵サイズの最大サイズ(ビット単位)を設定します。
int wolfSSL_SetMaxDhKey_Sz(WOLFSSL * ssl, word16 keySz_bits)
WOLFSSL構造体内のDiffie_Hellman鍵の最大サイズ(ビット単位)を設定します。
int wolfSSL_GetDhKey_Sz(WOLFSSL * )
options構造体のメンバであるdhKeySzの値(ビット単位)を返します。この値は、Diffie-Hellman鍵サイズをバイト単位で表します。
int wolfSSL_CTX_SetMinRsaKey_Sz(WOLFSSL_CTX * ctx, short keySz)
WOLFSSL_CTX構造体とWOLFSSL_CERT_MANAGER構造体の両方で最小RSA鍵サイズを設定します。
int wolfSSL_SetMinRsaKey_Sz(WOLFSSL * ssl, short keySz)
WOLFSSL構造体にあるRSAの最小許容鍵サイズをビット単位で設定します。
int wolfSSL_CTX_SetMinEccKey_Sz(WOLFSSL_CTX * ssl, short keySz)
WOLF_CTX構造体とWOLFSSL_CERT_MANAGER構造体でECC鍵の最小サイズをビット単位で設定します。
int wolfSSL_SetMinEccKey_Sz(WOLFSSL * ssl, short keySz)
options構造体のminEccKeySzメンバの値を設定します。options構造体はWOLFSSL構造体のメンバであり、sslパラメータを通じてアクセスされます。
int wolfSSL_make_eap_keys(WOLFSSL * ssl, void * key, unsigned int len, const char * label)
この関数は、マスターシークレットから鍵材料を導出するためにEAP_TLSとEAP-TTLSによって使用されます。
int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format)
この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。
int wolfSSL_CTX_load_verify_buffer_ex(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format, int userChain, word32 flags)
この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。_ex版はPR 2413で追加され、userChainとflagsの追加引数をサポートします。
int wolfSSL_CTX_load_verify_chain_buffer_format(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format)
この関数はCA証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。
int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format)
この関数は証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz, int format)
この関数は秘密鍵バッファをSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
int wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX * ctx, const unsigned char * in, long sz)
この関数は証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEM形式で、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。
int wolfSSL_use_certificate_buffer(WOLFSSL * ssl, const unsigned char * in, long sz, int format)
この関数は、証明書バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
int wolfSSL_use_PrivateKey_buffer(WOLFSSL * ssl, const unsigned char * in, long sz, int format)
この関数は、秘密鍵バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。
int wolfSSL_use_certificate_chain_buffer(WOLFSSL * ssl, const unsigned char * in, long sz)
この関数は、証明書チェーンバッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEMフォーマットである必要があり、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。
int wolfSSL_UnloadCertsKeys(WOLFSSL * )
この関数は、SSLが所有する証明書または鍵をアンロードします。
int wolfSSL_GetIVSize(WOLFSSL * )
WOLFSSL構造体に保持されているspecs構造体のiv_sizeメンバを返します。
void wolfSSL_KeepArrays(WOLFSSL * )
通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクが始まる前にこの関数を呼び出すと、wolfSSLは一時配列を解放しなくなります。一時配列はwolfSSL_get_keys()やPSKヒントなどに必要になる場合があります。ユーザーが一時配列を使い終わったら、wolfSSL_FreeArrays()を呼び出してリソースを即座に解放するか、あるいは関連するSSLオブジェクトが解放されるときにリソースが解放されます。
void wolfSSL_FreeArrays(WOLFSSL * )
通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクの前にwolfSSL_KeepArrays()が呼び出されていた場合、wolfSSLは一時配列を解放しません。この関数は一時配列を明示的に解放し、ユーザーが一時配列を使い終わり、SSLオブジェクトが解放されるのを待たずにこれらのリソースを解放したい場合に呼び出す必要があります。
int wolfSSL_DeriveTlsKeys(unsigned char * key_data, word32 keyLen, const unsigned char * ms, word32 msLen, const unsigned char * sr, const unsigned char * cr, int tls1_2, int hash_type)
TLS鍵を導出するための外部向けラッパー。
int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509 * x509, int nid, int lastPos)
この関数は、渡されたNID値に一致する拡張インデックスを検索して返します。
void * wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509 * x509, int nid, int * c, int * idx)
この関数は渡されたNID値に一致する拡張を検索して返します。
int wolfSSL_X509_digest(const WOLFSSL_X509 * x509, const WOLFSSL_EVP_MD * digest, unsigned char * buf, unsigned int * len)
この関数はDER証明書のハッシュを返します。
int wolfSSL_use_PrivateKey(WOLFSSL * ssl, WOLFSSL_EVP_PKEY * pkey)
WOLFSSL構造体の秘密鍵を設定するために使用されます。
int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL * ssl, unsigned char * der, long derSz)
WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式の鍵バッファが必要です。
int wolfSSL_use_RSAPrivateKey_ASN1(WOLFSSL * ssl, unsigned char * der, long derSz)
WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式のRSA鍵バッファが必要です。
WOLFSSL_DH * wolfSSL_DSA_dup_DH(const WOLFSSL_DSA * r)
この関数はdsaのパラメータを新しく作成されたWOLFSSL_DH構造体に複製します。
WOLFSSL_X509 * wolfSSL_d2i_X509_bio(WOLFSSL_BIO * bio, WOLFSSL_X509 ** x509)
この関数はbioからDERバッファを取得し、それをWOLFSSL_X509構造体に変換します。
WOLFSSL_X509 * wolfSSL_PEM_read_bio_X509_AUX(WOLFSSL_BIO * bp, WOLFSSL_X509 ** x, wc_pem_password_cb * cb, void * u)
この関数はwolfSSL_PEM_read_bio_X509と同じように動作します。AUXは、信頼された/拒否されたユースケースや人間が読みやすいフレンドリ名などの追加情報を含むことを意味します。
long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX * ctx, WOLFSSL_DH * dh)
WOLFSSL_CTX構造体のdhメンバをDiffie-Hellmanパラメータで初期化します。
WOLFSSL_DSA * wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO * bp, WOLFSSL_DSA ** x, wc_pem_password_cb * cb, void * u)
この関数は、bio内のPEMバッファからDSAパラメータを取得します。
WOLF_STACK_OF(WOLFSSL_X509 ) const
この関数は、ピアの証明書チェーンを取得します。
char * wolfSSL_X509_get_next_altname(WOLFSSL_X509 * )
この関数は、ピア証明書から次の代替名(もしあれば)を返します。
WOLFSSL_ASN1_TIME * wolfSSL_X509_get_notBefore(WOLFSSL_X509 * )
この関数は、x509がNULLかどうかを確認し、NULLでない場合はx509構造体のnotBeforeメンバを返します。

Functions Documentation

function wc_KeyPemToDer

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

PEM形式のキーをDER形式に変換します。

Parameters:

  • pem PEMエンコードされた証明書へのポインタ。
  • pemSz PEMバッファ(pem)のサイズ
  • buff DerBuffer構造体のbufferメンバーのコピーへのポインタ。
  • buffSz DerBuffer構造体に割り当てられたバッファスペースのサイズ。
  • pass 関数に渡されるパスワード。

See: wc_PemToDer

Return:

  • int 関数は正常実行時にバッファに書き込まれたバイト数を返します。
  • int エラーを示す負の整数が返されます。

Example

byte* loadBuf;
long fileSz = 0;
byte* bufSz;
static int LoadKeyFile(byte** keyBuf, word32* keyBufSz,
const char* keyFile,
                int typeKey, const char* password);
…
bufSz = wc_KeyPemToDer(loadBuf, (int)fileSz, saveBuf,
(int)fileSz, password);

if(saveBufSz > 0){
    // バイトがバッファに書き込まれました。
}

function wc_CertPemToDer

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

この関数は、PEM形式の証明書をDER形式に変換します。OpenSSL関数PemToDerを呼び出します。

Parameters:

  • pem PEM形式の証明書へのポインタ。
  • pemSz 証明書のサイズ。
  • buff DER形式にコピーされるバッファ。
  • buffSz バッファのサイズ。
  • type asn_public.h enum CertTypeにある証明書ファイルタイプ。

See: wc_PemToDer

Return: buffer バッファに書き込まれたバイトを返します。

Example

const unsigned char* pem;
int pemSz;
unsigned char buff[BUFSIZE];
int buffSz = sizeof(buff)/sizeof(char);
int type;
...
if(wc_CertPemToDer(pem, pemSz, buff, buffSz, type) <= 0) {
    // バッファにバイトが書き込まれました
}

function wc_GetPubKeyDerFromCert

int wc_GetPubKeyDerFromCert(
    struct DecodedCert * cert,
    byte * derKey,
    word32 * derKeySz
)

この関数は、入力されたDecodedCert構造体からDER形式の公開鍵を取得します。このAPIを呼び出す前に、ユーザーはwc_InitDecodedCert()とwc_ParseCert()を呼び出す必要があります。wc_InitDecodedCert()はDER/ASN.1エンコードされた証明書を受け入れます。PEM証明書をDERに変換するには、wc_InitDecodedCert()を呼び出す前にまずwc_CertPemToDer()を使用してください。

Parameters:

  • cert X.509証明書を保持する入力されたDecodedCert構造体
  • derKey DERエンコードされた公開鍵を配置する出力バッファ
  • derKeySz [IN/OUT] 入力時のderKeyバッファのサイズ、返却時の公開鍵のサイズ。derKeyがNULLとして渡された場合、derKeySzは公開鍵に必要なバッファサイズに設定され、関数からLENGTH_ONLY_Eが返されます。

See: wc_GetPubKeyDerFromCert

Return: 0 成功時、エラー時は負の値。derKeyがNULLで長さのみを返す場合はLENGTH_ONLY_E。

function wolfSSL_CTX_use_certificate_file

int wolfSSL_CTX_use_certificate_file(
    WOLFSSL_CTX * ctx,
    const char * file,
    int format
)

この関数は、証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMのいずれかです。適切な使用方法については、exampleを参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ
  • file wolfSSL SSLコンテキストにロードされる証明書を含むファイルの名前へのポインタ。
  • format - fileが指す証明書のフォーマット。可能なオプションはSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_FAILURE 関数呼び出しが失敗した場合、考えられる原因には、ファイルが間違ったフォーマットである、または"format"引数を使用して間違ったフォーマットが指定されている、ファイルが存在しない、読み取れない、または破損している、メモリ不足の状態が発生している、ファイルのBase16デコードが失敗したことなどが含まれます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_certificate_file(ctx, "./client-cert.pem",
                                 SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // 証明書ファイルのロードエラー
}
...

function wolfSSL_CTX_use_PrivateKey_file

int wolfSSL_CTX_use_PrivateKey_file(
    WOLFSSL_CTX * ctx,
    const char * file,
    int format
)

この関数は、秘密鍵ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。ファイルはfile引数によって提供されます。format引数はファイルのフォーマットタイプを指定します - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用方法については、exampleを参照してください。

Parameters:

  • none パラメータなし。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_FAILURE ファイルが間違ったフォーマットである、または"format"引数を使用して間違ったフォーマットが指定されている。ファイルが存在しない、読み取れない、または破損している。メモリ不足の状態が発生している。ファイルのBase16デコードが失敗した。キーファイルが暗号化されているが、パスワードが提供されていない。

外部キーストアを使用していて秘密鍵を持っていない場合、代わりに公開鍵を提供し、署名を処理するための暗号コールバックを登録できます。これには、暗号コールバックまたはPKコールバックのいずれかでビルドできます。暗号コールバックを有効にするには、–enable-cryptocbまたはWOLF_CRYPTO_CBでビルドし、wc_CryptoCb_RegisterDeviceを使用して暗号コールバックを登録し、wolfSSL_CTX_SetDevIdを使用して関連するdevIdを設定します。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_PrivateKey_file(ctx, "./server-key.pem",
                                SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // 鍵ファイルのロードエラー
}
...

function wolfSSL_CTX_load_verify_locations

int wolfSSL_CTX_load_verify_locations(
    WOLFSSL_CTX * ctx,
    const char * file,
    const char * path
)

この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数はディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • file PEM形式のCA証明書を含むファイルの名前へのポインタ。
  • path PEM形式の証明書をロードするディレクトリの名前へのポインタ。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_FAILURE ctxがNULLの場合、またはfileとpathの両方がNULLの場合に返されます。
  • SSL_BAD_FILETYPE ファイルが間違ったフォーマットの場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
  • ASN_BEFORE_DATE_E 現在の日付がbefore dateより前の場合に返されます。
  • ASN_AFTER_DATE_E 現在の日付がafter dateより後の場合に返されます。
  • BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
  • BAD_PATH_ERROR pathを開こうとしたときにopendir()が失敗した場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_load_verify_locations(ctx, "./ca-cert.pem", NULL);
if (ret != WOLFSSL_SUCCESS) {
    // CA証明書のロードエラー
}
...

function wolfSSL_CTX_load_verify_locations_ex

int wolfSSL_CTX_load_verify_locations_ex(
    WOLFSSL_CTX * ctx,
    const char * file,
    const char * path,
    unsigned int flags
)

この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WOLFSSL_CTX)にロードします。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである場合があります。 同じファイルに複数のCA証明書が含まれている場合、wolfSSLはファイル内に提示された順序でそれらをロードします。path引数は、信頼されたルートCAの証明書を含むディレクトリの名前へのポインタです。fileの値がNULLでない場合、必要でなければpathをNULLとして指定できます。pathが指定され、ライブラリのビルド時にNO_WOLFSSL_DIRが定義されていない場合、wolfSSLは指定されたディレクトリにあるすべてのCA証明書をロードします。この関数は、指定されたフラグに基づいてディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー"-----BEGIN CERTIFICATE-----"を持つPEM形式のCERT_TYPEファイルを想定しています。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • file PEM形式のCA証明書を含むファイル名へのポインタ。
  • path PEM形式の証明書を読み込むディレクトリ名へのポインタ。
  • flags 指定可能なマスク値: WOLFSSL_LOAD_FLAG_IGNORE_ERR、 WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY、WOLFSSL_LOAD_FLAG_PEM_CA_ONLY

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_FAILURE ctxがNULLの場合、またはfileとpathの両方がNULLの場合に返されます。少なくとも1つの証明書が正常にロードされたが、1つ以上が失敗した場合もこれが返されます。理由についてはエラースタックを確認してください。
  • SSL_BAD_FILETYPE ファイルが間違ったフォーマットの場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
  • BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。
  • BAD_PATH_ERROR pathを開こうとしたときにopendir()が失敗した場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_load_verify_locations_ex(ctx, NULL, "./certs/external",
    WOLFSSL_LOAD_FLAG_PEM_CA_ONLY);
if (ret != WOLFSSL_SUCCESS) {
    // CA証明書の読み込みエラー
}
...

function wolfSSL_get_system_CA_dirs

const char ** wolfSSL_get_system_CA_dirs(
    word32 * num
)

この関数は、wolfSSL_CTX_load_system_CA_certsが呼び出されたときにwolfSSLがシステムCA証明書を検索するディレクトリを表す文字列の配列へのポインタを返します。証明書をアクセス可能なシステムディレクトリに保存しないシステム(Appleプラットフォームなど)では、この関数は常にNULLを返します。

Parameters:

  • num 文字列配列の長さが格納されるword32へのポインタ。

See:

Return:

  • 成功時は有効なポインタ。
  • 失敗時はNULLポインタ。

Example

WOLFSSL_CTX* ctx;
const char** dirs;
word32 numDirs;

dirs = wolfSSL_get_system_CA_dirs(&numDirs);
for (int i = 0; i < numDirs; ++i) {
    printf("Potential system CA dir: %s\n", dirs[i]);
}
...

function wolfSSL_CTX_load_system_CA_certs

int wolfSSL_CTX_load_system_CA_certs(
    WOLFSSL_CTX * ctx
)

ほとんどのプラットフォーム(LinuxおよびWindowsを含む)において、この関数はOS依存のCA証明書ストアからWOLFSSL_CTXへCA証明書を読み込もうと試みます。読み込まれた証明書は信頼されます。

Parameters:

See:

Return:

  • 成功時はWOLFSSL_SUCCESS。
  • システムCA証明書が読み込まれなかった場合はWOLFSSL_BAD_PATH。
  • その他の失敗タイプの場合はWOLFSSL_FAILURE(例: Windows証明書ストアが適切に閉じられなかった場合)。

Appleプラットフォーム(macOSを除く)では、証明書をシステムから取得できないため、wolfSSL証明書マネージャに読み込むことができません。これらのプラットフォームでは、この関数は、WOLFSSL_CTXにバインドされたTLS接続において、ユーザーによって読み込まれた証明書に対してピア証明書の信頼性を最初に認証できない場合に、ネイティブシステムの信頼APIを使用してピア証明書チェーンの信頼性を検証できるようにします。

サポートおよびテストされているプラットフォームは、Linux(Debian、Ubuntu、 Gentoo、Fedora、RHEL)、Windows 10/11、Android、macOS、およびiOSです。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_load_system_CA_certs(ctx,);
if (ret != WOLFSSL_SUCCESS) {
    // システムCA証明書の読み込みエラー
}
...

function wolfSSL_CTX_use_certificate_chain_file

int wolfSSL_CTX_use_certificate_chain_file(
    WOLFSSL_CTX * ctx,
    const char * file
)

この関数は、証明書チェーンをSSLコンテキスト(WOLFSSL_CTX)に読み込みます。証明書チェーンを含むファイルはfile引数によって提供され、PEM形式の証明書を含む必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • file wolfSSL SSLコンテキストに読み込まれる証明書チェーンを含むファイルの名前へのポインタ。証明書はPEM形式である必要があります。

See:

Return:

  • 成功時はSSL_SUCCESS。
  • 関数呼び出しが失敗した場合はSSL_FAILURE。考えられる原因には、ファイルの形式が間違っている、または「format」引数を使用して間違った形式が指定されている、ファイルが存在しない、読み取れない、または破損している、メモリ不足状態が発生した、などがあります。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_certificate_chain_file(ctx, "./cert-chain.pem");
if (ret != SSL_SUCCESS) {
    // 証明書ファイルの読み込みエラー
}
...

function wolfSSL_CTX_der_load_verify_locations

int wolfSSL_CTX_der_load_verify_locations(
    WOLFSSL_CTX * ctx,
    const char * file,
    int format
)

この関数はwolfSSL_CTX_load_verify_locationsに似ていますが、DER形式のCAファイルをSSLコンテキスト(WOLFSSL_CTX)にロードできます。PEM形式のCAファイルをロードするためにも使用できます。これらの証明書は信頼されたルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。file引数で指定されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルである可能性があります。複数のCA証明書が同じファイルに含まれている場合、wolfSSLはファイル内で提示された順序でそれらをロードします。format引数は、証明書の形式がSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1(DER)のいずれかであることを指定します。wolfSSL_CTX_load_verify_locationsとは異なり、この関数は指定されたディレクトリパスからのCA証明書のロードを許可しません。この関数は、wolfSSLライブラリがWOLFSSL_DER_LOADを定義してコンパイルされている場合にのみ利用可能です。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ
  • file wolfSSL SSLコンテキストにロードするCA証明書を含むファイルの名前へのポインタ、形式はformatで指定されます。
  • format fileで指定された証明書のエンコーディングタイプ。指定可能な値はSSL_FILETYPE_PEMとSSL_FILETYPE_ASN1です。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_FAILURE 失敗時。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_der_load_verify_locations(ctx, "./ca-cert.der",
                                      SSL_FILETYPE_ASN1);
if (ret != SSL_SUCCESS) {
    // CA証明書のロードエラー
}
...

function wolfSSL_SetCertCbCtx

void wolfSSL_SetCertCbCtx(
    WOLFSSL * ssl,
    void * ctx
)

この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • ctx WOLFSSL構造体のverifyCbCtxメンバの値に設定されるvoidポインタ。

See:

Return: none 返り値はありません。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
(void*)ctx;
...
if(ssl != NULL){
    wolfSSL_SetCertCbCtx(ssl, ctx);
} else {
    // エラーケース、SSLが適切に初期化されていません。
}

function wolfSSL_CTX_SetCertCbCtx

void wolfSSL_CTX_SetCertCbCtx(
    WOLFSSL_CTX * ctx,
    void * userCtx
)

この関数は検証コールバック用のユーザーCTXオブジェクト情報を格納します。

Parameters:

  • ctx WOLFSSL_CTX構造体へのポインタ。
  • userCtx WOLFSSL_CTX構造体のverifyCbCtxメンバの値を設定するために使用されるvoidポインタ。

See:

Return: none 返り値はありません。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
void* userCtx = NULL; // ユーザー定義のコンテキストを割り当て
...
if(ctx != NULL){
    wolfSSL_SetCertCbCtx(ctx, userCtx);
} else {
    // エラーケース、SSLが適切に初期化されていません。
}

function wolfSSL_CTX_save_cert_cache

int wolfSSL_CTX_save_cert_cache(
    WOLFSSL_CTX * ctx,
    const char * fname
)

この関数は、証明書キャッシュをメモリからファイルに書き込みます。

Parameters:

  • ctx 証明書情報を保持するWOLFSSL_CTX構造体へのポインタ。
  • fname 書き込み用ファイルを指す定数char型ポインタ。

See:

  • CM_SaveCertCache
  • DoMemSaveCertCache

Return:

  • SSL_SUCCESS CM_SaveCertCacheが正常に終了した場合に返されます。
  • BAD_FUNC_ARG いずれかの引数がNULLの場合に返されます。
  • SSL_BAD_FILE 証明書キャッシュ保存ファイルを開くことができなかった場合に返されます。
  • BAD_MUTEX_E ロックmutexが失敗した場合に返されます。
  • MEMORY_E メモリの割り当てに失敗した場合に返されます。
  • FWRITE_ERROR 証明書キャッシュファイルの書き込みに失敗しました。

Example

WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol def );
const char* fname;
...
if(wolfSSL_CTX_save_cert_cache(ctx, fname)){
    // ファイルが書き込まれました。
}

function wolfSSL_CTX_restore_cert_cache

int wolfSSL_CTX_restore_cert_cache(
    WOLFSSL_CTX * ctx,
    const char * fname
)

この関数は、証明書キャッシュをファイルから永続化します。

Parameters:

  • ctx 証明書情報を保持するWOLFSSL_CTX構造体へのポインタ。
  • fname 読み取り用ファイルを指す定数char型ポインタ。

See:

  • CM_RestoreCertCache
  • XFOPEN

Return:

  • SSL_SUCCESS 関数CM_RestoreCertCacheが正常に実行された場合に返されます。
  • SSL_BAD_FILE XFOPENがXBADFILEを返した場合に返されます。ファイルが破損しています。
  • MEMORY_E 一時バッファに割り当てられたメモリが失敗した場合に返されます。
  • BAD_FUNC_ARG fnameまたはctxがNULL値を持つ場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
const char* fname = "ファイルへのパス";
...
if(wolfSSL_CTX_restore_cert_cache(ctx, fname)){
    // 実行が成功したかどうかを確認します。
}

function wolfSSL_CTX_memsave_cert_cache

int wolfSSL_CTX_memsave_cert_cache(
    WOLFSSL_CTX * ctx,
    void * mem,
    int sz,
    int * used
)

この関数は、証明書キャッシュをメモリに永続化します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • mem 宛先(出力バッファ)へのvoid型ポインタ。
  • sz 出力バッファのサイズ。
  • used 証明書キャッシュヘッダのサイズへのポインタ。

See:

  • DoMemSaveCertCache
  • GetCertCacheMemSize
  • CM_MemRestoreCertCache
  • CM_GetCertCacheMemSize

Return:

  • SSL_SUCCESS 関数の実行が成功し、エラーが発生しなかった場合に返されます。
  • BAD_MUTEX_E WOLFSSL_CERT_MANAGERメンバcaLockが0(ゼロ)でなかったmutexエラー。
  • BAD_FUNC_ARG ctx、mem、またはusedがNULLの場合、またはszが0(ゼロ)以下の場合に返されます。
  • BUFFER_E 出力バッファmemが小さすぎました。

Example

WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol );
void* mem;
int sz;
int* used;
...
if(wolfSSL_CTX_memsave_cert_cache(ctx, mem, sz, used) != SSL_SUCCESS){
    // 関数がエラーを返しました。
}

function wolfSSL_CTX_get_cert_cache_memsize

int wolfSSL_CTX_get_cert_cache_memsize(
    WOLFSSL_CTX * ctx
)

証明書キャッシュの保存バッファに必要なサイズを返します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたwolfSSL_CTX構造体へのポインタ。

See: CM_GetCertCacheMemSize

Return:

  • int 成功時にメモリサイズを表す整数値が返されます。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合に返されます。
  • BAD_MUTEX_E mutexロックエラーがあった場合に返されます。

Example

WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(protocol);
...
int certCacheSize = wolfSSL_CTX_get_cert_cache_memsize(ctx);

if(certCacheSize != BAD_FUNC_ARG || certCacheSize != BAD_MUTEX_E){
// メモリサイズの取得に成功しました。
}

function wolfSSL_X509_NAME_oneline

char * wolfSSL_X509_NAME_oneline(
    WOLFSSL_X509_NAME * name,
    char * in,
    int sz
)

この関数はx509の名前をバッファにコピーします。

Parameters:

  • name WOLFSSL_X509構造体へのポインタ。
  • in WOLFSSL_X509_NAME構造体からコピーされた名前を保持するバッファ。
  • sz バッファの最大サイズ。

See:

Return: 関数が正常に実行された場合、WOLFSSL_X509_NAME構造体のnameメンバーのデータを持つバッファへのcharポインタが返されます。

Example

WOLFSSL_X509 x509;
char* name;
...
name = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);

if(name <= 0){
    // バッファに何もありません
}

function wolfSSL_X509_get_issuer_name

WOLFSSL_X509_NAME * wolfSSL_X509_get_issuer_name(
    WOLFSSL_X509 * cert
)

この関数は証明書の発行者名を返します。

Parameters:

  • cert WOLFSSL_X509構造体へのポインタ。

See:

Return:

  • point 渡されたcertがNULLでない場合、WOLFSSL_X509構造体のissuerメンバーへのポインタが返されます。
  • NULL 渡されたcertがNULLの場合。

Example

WOLFSSL_X509* x509;
WOLFSSL_X509_NAME issuer;
...
issuer = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);

if(!issuer){
    // NULLが返されました
} else {
    // issuerは証明書の発行者名を保持しています
}

function wolfSSL_X509_get_subject_name

WOLFSSL_X509_NAME * wolfSSL_X509_get_subject_name(
    WOLFSSL_X509 * cert
)

この関数はWOLFSSL_X509構造体のsubjectメンバーを返します。

Parameters:

  • cert WOLFSSL_X509構造体へのポインタ。

See:

Return: pointer WOLFSSL_X509_NAME構造体へのポインタ。WOLFSSL_X509構造体がNULLの場合、または構造体のsubjectメンバーがNULLの場合、ポインタはNULLになる可能性があります。

Example

WOLFSSL_X509* cert;
WOLFSSL_X509_NAME name;
…
name = wolfSSL_X509_get_subject_name(cert);
if(name == NULL){
    // NULLケースを処理
}

function wolfSSL_X509_get_isCA

int wolfSSL_X509_get_isCA(
    WOLFSSL_X509 * cert
)

WOLFSSL_X509構造体のisCaメンバーをチェックし、その値を返します。

Parameters:

  • cert WOLFSSL_X509構造体へのポインタ。

See:

Return:

  • isCA WOLFSSL_X509構造体のisCaメンバーの値が返されます。
  • 0 有効なx509構造体が渡されなかった場合に返されます。

Example

WOLFSSL* ssl;
...
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
if(wolfSSL_X509_get_isCA(ssl)){
    // これはCAです
}else {
    // 失敗ケース
}

function wolfSSL_X509_NAME_get_text_by_NID

int wolfSSL_X509_NAME_get_text_by_NID(
    WOLFSSL_X509_NAME * name,
    int nid,
    char * buf,
    int len
)

この関数は渡されたNID値に関連するテキストを取得します。

Parameters:

  • name テキストを検索するWOLFSSL_X509_NAME。
  • nid 検索するNID。
  • buf 見つかったテキストを保持するバッファ。
  • len バッファの長さ。

See: none

Return: int テキストバッファのサイズを返します。

Example

WOLFSSL_X509_NAME* name;
char buffer[100];
int bufferSz;
int ret;
// WOLFSSL_X509_NAMEを取得
ret = wolfSSL_X509_NAME_get_text_by_NID(name, NID_commonName,
buffer, bufferSz);

// ret値を確認

function wolfSSL_X509_get_signature_type

int wolfSSL_X509_get_signature_type(
    WOLFSSL_X509 * cert
)

この関数はWOLFSSL_X509構造体のsigOIDメンバーに格納されている値を返します。

Parameters:

  • cert WOLFSSL_X509構造体へのポインタ。

See:

Return:

  • 0 WOLFSSL_X509構造体がNULLの場合に返されます。
  • int x509オブジェクトから取得された整数値が返されます。

Example

WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
                        DYNAMIC_TYPE_X509);
...
int x509SigType = wolfSSL_X509_get_signature_type(x509);

if(x509SigType != EXPECTED){
    // 予期しない値を処理
}

function wolfSSL_X509_get_signature

int wolfSSL_X509_get_signature(
    WOLFSSL_X509 * x509,
    unsigned char * buf,
    int * bufSz
)

X509署名を取得し、バッファに格納します。

Parameters:

  • x509 WOLFSSL_X509構造体へのポインタ。
  • buf バッファへのcharポインタ。
  • bufSz バッファのサイズへの整数ポインタ。

See:

Return:

  • SSL_SUCCESS 関数が正常に実行された場合に返されます。署名はバッファに読み込まれます。
  • SSL_FATAL_ERRROR x509構造体またはbufSzメンバーがNULLの場合に返されます。sig構造体のlengthメンバー(sigはx509のメンバー)のチェックもあります。

Example

WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
unsigned char* buf; // 初期化
int* bufSz = sizeof(buf)/sizeof(unsigned char);
...
if(wolfSSL_X509_get_signature(x509, buf, bufSz) != SSL_SUCCESS){
    // 関数は正常に実行されませんでした
} else{
    // バッファは正しく書き込まれました
}

function wolfSSL_X509_STORE_add_cert

int wolfSSL_X509_STORE_add_cert(
    WOLFSSL_X509_STORE * store,
    WOLFSSL_X509 * x509
)

この関数はWOLFSSL_X509_STORE構造体に証明書を追加します。

Parameters:

  • str 証明書を追加する証明書ストア。
  • x509 追加する証明書。

See: wolfSSL_X509_free

Return:

  • SSL_SUCCESS 証明書が正常に追加された場合。
  • SSL_FATAL_ERROR 証明書が正常に追加されなかった場合。

Example

WOLFSSL_X509_STORE* str;
WOLFSSL_X509* x509;
int ret;
ret = wolfSSL_X509_STORE_add_cert(str, x509);
// ret値を確認

function wolfSSL_X509_STORE_CTX_get_chain

WOLFSSL_STACK * wolfSSL_X509_STORE_CTX_get_chain(
    WOLFSSL_X509_STORE_CTX * ctx
)

この関数はWOLFSSL_X509_STORE_CTX構造体のchain変数のgetter関数です。現在、chainは入力されていません。

Parameters:

  • ctx 解析チェーンを取得する証明書ストアコンテキスト。

See: wolfSSL_sk_X509_free

Return:

  • pointer 成功した場合、WOLFSSL_STACK(STACK_OF(WOLFSSL_X509)と同じ)ポインタを返します。
  • Null 失敗時。

Example

WOLFSSL_STACK* sk;
WOLFSSL_X509_STORE_CTX* ctx;
sk = wolfSSL_X509_STORE_CTX_get_chain(ctx);
// skがNULLでないか確認してから使用。使用後はskを解放する必要があります

function wolfSSL_X509_STORE_set_flags

int wolfSSL_X509_STORE_set_flags(
    WOLFSSL_X509_STORE * store,
    unsigned long flag
)

この関数は渡されたWOLFSSL_X509_STORE構造体の動作を変更するためのフラグを受け取ります。使用されるフラグの例としてWOLFSSL_CRL_CHECKがあります。

Parameters:

  • str フラグを設定する証明書ストア。
  • flag 動作のためのフラグ。

See:

  • wolfSSL_X509_STORE_new
  • wolfSSL_X509_STORE_free

Return:

  • SSL_SUCCESS フラグの設定時にエラーが発生しなかった場合。
  • <0 失敗時に負の値が返されます。

Example

WOLFSSL_X509_STORE* str;
int ret;
// strを作成して設定
ret = wolfSSL_X509_STORE_set_flags(str, WOLFSSL_CRL_CHECKALL);
if (ret != SSL_SUCCESS) {
    //ret値を確認してエラーケースを処理する
}

function wolfSSL_X509_notBefore

const byte * wolfSSL_X509_notBefore(
    WOLFSSL_X509 * x509
)

この関数は、バイト配列としてエンコードされた証明書の「not before」有効期限を返します。

Parameters:

  • x509 WOLFSSL_X509構造体へのポインタ。

See:

Return:

  • NULL WOLFSSL_X509構造体がNULLの場合に返されます。
  • byte notBeforeDataを含むバイトが返されます。

Example

WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
                        DYNAMIC_TYPE_X509);
...
byte* notBeforeData = wolfSSL_X509_notBefore(x509);

function wolfSSL_X509_notAfter

const byte * wolfSSL_X509_notAfter(
    WOLFSSL_X509 * x509
)

この関数は、バイト配列としてエンコードされた証明書の「not after」有効期限を返します。

Parameters:

  • x509 WOLFSSL_X509構造体へのポインタ。

See:

Return:

  • NULL WOLFSSL_X509構造体がNULLの場合に返されます。
  • byte notAfterDataを含むバイトが返されます。

Example

WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
                        DYNAMIC_TYPE_X509);
...
byte* notAfterData = wolfSSL_X509_notAfter(x509);

function wolfSSL_CTX_set_client_cert_cb

void wolfSSL_CTX_set_client_cert_cb(
    WOLFSSL_CTX * ctx,
    client_cert_cb cb
)

クライアント証明書と秘密鍵を選択するコールバックを設定します。

Parameters:

  • ctx WOLFSSL_CTXオブジェクト。
  • cb クライアント証明書と鍵を選択するコールバック関数。

See: wolfSSL_CTX_set_cert_cb

Return: void

この関数は、ハンドシェイク中にクライアント証明書が要求されたときに呼び出されるコールバックをアプリケーションが登録できるようにします。コールバックは、使用する証明書と鍵を選択して提供できます。

Example

int my_client_cert_cb(WOLFSSL *ssl, WOLFSSL_X509 **x509, WOLFSSL_EVP_PKEY **pkey) { ... }
wolfSSL_CTX_set_client_cert_cb(ctx, my_client_cert_cb);

function wolfSSL_CTX_set_cert_cb

void wolfSSL_CTX_set_cert_cb(
    WOLFSSL_CTX * ctx,
    CertSetupCallback cb,
    void * arg
)

汎用証明書セットアップコールバックを設定します。

Parameters:

  • ctx WOLFSSL_CTXオブジェクト。
  • cb 証明書セットアップ用のコールバック関数。
  • arg コールバックに渡すユーザー引数。

See: wolfSSL_CTX_set_client_cert_cb

Return: void

この関数は、証明書セットアップ中に呼び出されるコールバックをアプリケーションが登録できるようにします。コールバックは、カスタム証明書選択またはロードロジックを実行できます。

Example

int my_cert_setup_cb(WOLFSSL* ssl, void* arg) { ... }
wolfSSL_CTX_set_cert_cb(ctx, my_cert_setup_cb, NULL);

function wolfSSL_get_psk_identity_hint

const char * wolfSSL_get_psk_identity_hint(
    const WOLFSSL * 
)

この関数は、PSKアイデンティティヒントを返します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See: wolfSSL_get_psk_identity

Return:

  • pointer WOLFSSL構造体のarraysメンバに格納されていた値へのconst char型ポインタが返されます。
  • NULL WOLFSSLまたはArrays構造体がNULLの場合に返されます。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
char* idHint;
...
idHint = wolfSSL_get_psk_identity_hint(ssl);
if(idHint){
    // ヒントが取得されました。
    return idHint;
} else {
    // ヒントの取得に成功しませんでした。
}

function wolfSSL_get_psk_identity

const char * wolfSSL_get_psk_identity(
    const WOLFSSL * 
)

この関数は、Arrays構造体のclient_identityメンバへの定数ポインタを返します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See:

Return:

  • string Arrays構造体のclient_identityメンバの文字列値。
  • NULL WOLFSSL構造体がNULL、またはWOLFSSL構造体のArraysメンバがNULLの場合。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);    const char* pskID;
...
pskID = wolfSSL_get_psk_identity(ssl);

if(pskID == NULL){
    // pskIDに値がありません
}

function wolfSSL_CTX_use_psk_identity_hint

int wolfSSL_CTX_use_psk_identity_hint(
    WOLFSSL_CTX * ctx,
    const char * hint
)

この関数は、hint引数をWOLFSSL_CTX構造体のserver_hintメンバに格納します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • hint WOLFSSL_CTX構造体にコピーされる定数charポインタ。

See: wolfSSL_use_psk_identity_hint

Return: SSL_SUCCESS 関数の実行が成功した場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
const char* hint;
int ret;
…
ret = wolfSSL_CTX_use_psk_identity_hint(ctx, hint);
if(ret == SSL_SUCCESS){
    // 関数は成功しました
return ret;
} else {
    // 失敗ケース
}

function wolfSSL_use_psk_identity_hint

int wolfSSL_use_psk_identity_hint(
    WOLFSSL * ssl,
    const char * hint
)

この関数は、hint引数をWOLFSSL構造体内のArrays構造体のserver_hintメンバに格納します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • hint メモリに保存されるヒントを保持する定数文字ポインタ。

See: wolfSSL_CTX_use_psk_identity_hint

Return:

  • SSL_SUCCESS hintがWOLFSSL構造体に正常に格納された場合に返されます。
  • SSL_FAILURE WOLFSSLまたはArrays構造体がNULLの場合に返されます。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
const char* hint;
...
if(wolfSSL_use_psk_identity_hint(ssl, hint) != SSL_SUCCESS){
    // 失敗ケースを処理
}

function wolfSSL_get_peer_certificate

WOLFSSL_X509 * wolfSSL_get_peer_certificate(
    WOLFSSL * ssl
)

この関数は、ピアの証明書を取得します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See:

Return:

  • pointer 存在する場合、WOLFSSL_X509構造体のpeerCertメンバへのポインタ。
  • 0 ピア証明書発行者のサイズが定義されていない場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
WOLFSSL_X509* peerCert = wolfSSL_get_peer_certificate(ssl);

if(peerCert){
    // ピア証明書へのポインタpeerCertがあります
}

function wolfSSL_get_chain_X509

WOLFSSL_X509 * wolfSSL_get_chain_X509(
    WOLFSSL_X509_CHAIN * chain,
    int idx
)

この関数は証明書チェーンからインデックス(idx)にあるピアのwolfSSL_X509_certificateを取得します。

Parameters:

  • chain 動的メモリを使用しないSESSION_CACHEに使用されるWOLFSSL_X509_CHAINへのポインタ。
  • idx WOLFSSL_X509証明書のインデックス。

See:

  • InitDecodedCert
  • ParseCertRelative
  • CopyDecodedToX509

Return: pointer WOLFSSL_X509構造体へのポインタを返します。

返されたメモリをwolfSSL_FreeX509()を呼び出して解放することはユーザーの責任です。

Example

WOLFSSL_X509_CHAIN* chain = &session->chain;
int idx = 999; // idxを設定
...
WOLFSSL_X509_CHAIN ptr;
prt = wolfSSL_get_chain_X509(chain, idx);

if(ptr != NULL){
    // ptrは指定されたインデックスの証明書を含みます
    wolfSSL_FreeX509(ptr);
} else {
    // ptrはNULLです
}

function wolfSSL_X509_get_subjectCN

char * wolfSSL_X509_get_subjectCN(
    WOLFSSL_X509 * 
)

証明書からサブジェクトのコモンネームを返します。

Parameters:

  • x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。

See:

Return:

  • NULL x509構造体がnullの場合に返されます。
  • string 成功時にはサブジェクトのコモンネームの文字列表現が返されます。

Example

WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
                        DYNAMIC_TYPE_X509);
...
int x509Cn = wolfSSL_X509_get_subjectCN(x509);
if(x509Cn == NULL){
    // NULLケースを処理
} else {
    // x509Cnにはコモンネームが含まれる
}

function wolfSSL_X509_get_der

const unsigned char * wolfSSL_X509_get_der(
    WOLFSSL_X509 * x509,
    int * outSz
)

この関数は、WOLFSSL_X509構造体内のDERエンコードされた証明書を取得します。

Parameters:

  • x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。
  • outSz WOLFSSL_X509構造体のderBufferメンバの長さ。

See:

Return:

  • buffer この関数は、DerBuffer構造体のbufferメンバを返します。これはbyte型です。
  • NULL x509またはoutSzパラメータがNULLの場合に返されます。

Example

WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
                        DYNAMIC_TYPE_X509);
int* outSz; // 初期化
...
byte* x509Der = wolfSSL_X509_get_der(x509, outSz);
if(x509Der == NULL){
    // 失敗ケース、パラメータの1つがNULLだった
}

function wolfSSL_X509_get_notAfter

WOLFSSL_ASN1_TIME * wolfSSL_X509_get_notAfter(
    WOLFSSL_X509 * 
)

この関数は、x509がNULLであるかどうかをチェックし、そうでない場合はx509構造体のnotAfterメンバを返します。

Parameters:

  • x509 WOLFSSL_X509構造体へのポインタ。

See: wolfSSL_X509_get_notBefore

Return:

  • pointer x509構造体のnotAfterメンバへのASN1_TIMEを持つ構造体へのポインタ。
  • NULL x509オブジェクトがNULLの場合に返されます。

Example

WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509) ;
...
const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notAfter(x509);
if(notAfter == NULL){
    // 失敗ケース、x509オブジェクトがnull
}

function wolfSSL_X509_version

int wolfSSL_X509_version(
    WOLFSSL_X509 * 
)

この関数は、X509証明書のバージョンを取得します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See:

Return:

  • 0 x509構造体がNULLの場合に返されます。
  • version x509構造体に格納されているバージョンが返されます。

Example

WOLFSSL_X509* x509;
int version;
...
version = wolfSSL_X509_version(x509);
if(!version){
    // 関数は0を返した、失敗ケース
}

function wolfSSL_X509_d2i_fp

WOLFSSL_X509 * wolfSSL_X509_d2i_fp(
    WOLFSSL_X509 ** x509,
    FILE * file
)

NO_STDIO_FILESYSTEMが定義されている場合、この関数はヒープメモリを割り当て、WOLFSSL_X509構造体を初期化し、そのポインタを返します。

Parameters:

  • x509 WOLFSSL_X509ポインタへのポインタ。
  • file FILEへのポインタである定義された型。

See:

  • wolfSSL_X509_d2i
  • XFTELL
  • XREWIND
  • XFSEEK

Return:

  • *WOLFSSL_X509 関数が正常に実行された場合、WOLFSSL_X509構造体ポインタが返されます。
  • NULL XFTELLマクロの呼び出しが負の値を返した場合。

Example

WOLFSSL_X509* x509a = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
WOLFSSL_X509** x509 = x509a;
XFILE file;  // (struct fs_file*にマップされる)
...
WOLFSSL_X509* newX509 = wolfSSL_X509_d2i_fp(x509, file);
if(newX509 == NULL){
    // 関数はNULLを返した
}

function wolfSSL_X509_load_certificate_file

WOLFSSL_X509 * wolfSSL_X509_load_certificate_file(
    const char * fname,
    int format
)

この関数は、x509証明書をメモリにロードします。

Parameters:

  • fname ロードする証明書ファイル。
  • format 証明書のフォーマット。

See:

  • InitDecodedCert
  • PemToDer
  • wolfSSL_get_certificate
  • AssertNotNull

Return:

  • pointer 正常に実行されると、WOLFSSL_X509構造体へのポインタが返されます。
  • NULL 証明書を書き込むことができなかった場合に返されます。

Example

#define cliCert    "certs/client-cert.pem"
…
X509* x509;
…
x509 = wolfSSL_X509_load_certificate_file(cliCert, SSL_FILETYPE_PEM);
AssertNotNull(x509);

function wolfSSL_X509_get_device_type

unsigned char * wolfSSL_X509_get_device_type(
    WOLFSSL_X509 * x509,
    unsigned char * in,
    int * inOutSz
)

この関数は、x509構造体からデバイスタイプをバッファにコピーします。

Parameters:

  • x509 WOLFSSL_X509_new()で作成されたWOLFSSL_X509構造体へのポインタ。
  • in デバイスタイプ(バッファ)を保持するバイト型へのポインタ。
  • inOutSz パラメータinOutSzまたはx509構造体のdeviceTypeSzメンバのいずれか小さい方。

See:

Return:

  • pointer x509構造体からデバイスタイプを保持するバイトポインタが返されます。
  • NULL バッファサイズがNULLの場合に返されます。

Example

WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509);
byte* in;
int* inOutSz;
...
byte* deviceType = wolfSSL_X509_get_device_type(x509, in, inOutSz);

if(!deviceType){
    // 失敗ケース、NULLが返された
}

function wolfSSL_X509_get_hw_type

unsigned char * wolfSSL_X509_get_hw_type(
    WOLFSSL_X509 * x509,
    unsigned char * in,
    int * inOutSz
)

この関数は、WOLFSSL_X509構造体のhwTypeメンバをバッファにコピーします。

Parameters:

  • x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。
  • in バッファを表すbyte型へのポインタ。
  • inOutSz バッファのサイズを表すint型へのポインタ。

See:

Return:

  • byte 関数は、以前にWOLFSSL_X509構造体のhwTypeメンバに保持されていたデータのバイト型を返します。
  • NULL inOutSzがNULLの場合に返されます。

Example

WOLFSSL_X509* x509;  // X509証明書
byte* in;  // バッファを初期化
int* inOutSz;  // バッファのサイズを保持
...
byte* hwType = wolfSSL_X509_get_hw_type(x509, in, inOutSz);

if(hwType == NULL){
    // 失敗ケース、関数はNULLを返した
}

function wolfSSL_X509_get_hw_serial_number

unsigned char * wolfSSL_X509_get_hw_serial_number(
    WOLFSSL_X509 * x509,
    unsigned char * in,
    int * inOutSz
)

この関数は、x509オブジェクトのhwSerialNumメンバを返します。

Parameters:

  • x509 証明書情報を含むWOLFSSL_X509構造体へのポインタ。
  • in コピー先のバッファへのポインタ。
  • inOutSz バッファのサイズへのポインタ。

See:

Return: pointer 関数は、x509オブジェクトからロードされたシリアル番号を含むinバッファへのバイトポインタを返します。

Example

char* serial;
byte* in;
int* inOutSz;
WOLFSSL_X509 x509;
...
serial = wolfSSL_X509_get_hw_serial_number(x509, in, inOutSz);

if(serial == NULL || serial <= 0){
    // 失敗ケース
}

function wolfSSL_SetTmpDH

int wolfSSL_SetTmpDH(
    WOLFSSL * ssl,
    const unsigned char * p,
    int pSz,
    const unsigned char * g,
    int gSz
)

サーバDiffie-Hellmanエフェメラルパラメータの設定。この関数は、サーバがDHEを使用する暗号スイートをネゴシエートする場合に使用されるグループパラメータを設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • p Diffie-Hellman素数パラメータ。
  • pSz pのサイズ。
  • g Diffie-Hellman「生成元」パラメータ。
  • gSz gのサイズ。

See: SSL_accept

Return:

  • SSL_SUCCESS 成功時。
  • MEMORY_ERROR メモリエラーが発生した場合に返されます。
  • SIDE_ERROR この関数がSSLサーバではなくSSLクライアントで呼び出された場合に返されます。

Example

WOLFSSL* ssl;
static unsigned char p[] = {...};
static unsigned char g[] = {...};
...
wolfSSL_SetTmpDH(ssl, p, sizeof(p), g, sizeof(g));

function wolfSSL_SetTmpDH_buffer

int wolfSSL_SetTmpDH_buffer(
    WOLFSSL * ssl,
    const unsigned char * b,
    long sz,
    int format
)

この関数は、Diffie-HellmanパラメータのラッパーであるwolfSSL_SetTMpDH_buffer_wrapperを呼び出します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • buf wolfSSL_SetTMpDH_file_wrapperから渡される割り当てられたバッファ。
  • sz ファイル(wolfSSL_SetTmpDH_file_wrapper内のfname)のサイズを保持するlong int型。
  • format wolfSSL_SetTmpDH_file_wrapper()から渡される証明書形式の表現である整数型。

See:

Return:

  • SSL_SUCCESS 実行が成功した場合。
  • SSL_BAD_FILETYPE ファイルタイプがPEMでなく、ASN.1でもない場合。また、wc_DhParamsLoadが正常に返されなかった場合にも返されます。
  • SSL_NO_PEM_HEADER PEMヘッダが存在しない場合、PemToDerから返されます。
  • SSL_BAD_FILE PemToDerでファイルエラーがあった場合に返されます。
  • SSL_FATAL_ERROR コピーエラーがあった場合、PemToDerから返されます。
  • MEMORY_E メモリ割り当てエラーがあった場合。
  • BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはサブルーチンにNULL引数が渡された場合に返されます。
  • DH_KEY_SIZE_E wolfSSL_SetTmpDH()またはwolfSSL_CTX_SetTmpDH()でキーサイズエラーがある場合に返されます。
  • SIDE_ERROR wolfSSL_SetTmpDHでサーバ側でない場合に返されます。

Example

Static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
Const char* fname, int format);
long sz = 0;
byte* myBuffer = staticBuffer[FILE_BUFFER_SIZE];
…
if(ssl)
    ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);

function wolfSSL_SetTmpDH_file

int wolfSSL_SetTmpDH_file(
    WOLFSSL * ssl,
    const char * f,
    int format
)

この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • fname 証明書を保持する定数char型ポインタ。
  • format 証明書の形式を保持する整数型。

See:

Return:

  • SSL_SUCCESS この関数とそのサブルーチンが正常に完了した場合に返されます。
  • MEMORY_E この関数またはサブルーチンでメモリ割り当てが失敗した場合に返されます。
  • SIDE_ERROR WOLFSSL構造体内のOptions構造体のsideメンバがサーバ側でない場合。
  • SSL_BAD_FILETYPE 証明書が一連のチェックに失敗した場合に返されます。
  • DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL構造体のminDhKeySzメンバの値より小さい場合に返されます。
  • DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL構造体のmaxDhKeySzメンバの値より大きい場合に返されます。
  • BAD_FUNC_ARG WOLFSSL構造体など、許可されていない引数値がNULLの場合に返されます。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
const char* dhParam;
…
AssertIntNE(SSL_SUCCESS,
    wolfSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM));

function wolfSSL_CTX_SetTmpDH

int wolfSSL_CTX_SetTmpDH(
    WOLFSSL_CTX * ctx,
    const unsigned char * p,
    int pSz,
    const unsigned char * g,
    int gSz
)

サーバCTX Diffie-Hellmanのパラメータを設定します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • p serverDH_P構造体のbufferメンバに読み込まれる定数unsigned char型ポインタ。
  • pSz pのサイズを表すint型で、MAX_DH_SIZEに初期化されます。
  • g serverDH_G構造体のbufferメンバに読み込まれる定数unsigned char型ポインタ。
  • gSz gのサイズを表すint型で、MAX_DH_SIZEに初期化されます。

See:

Return:

  • SSL_SUCCESS 関数とすべてのサブルーチンがエラーなく返された場合に返されます。
  • BAD_FUNC_ARG CTX、pまたはgパラメータがNULLの場合に返されます。
  • DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のminDhKeySzメンバの値より小さい場合に返されます。
  • DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のmaxDhKeySzメンバの値より大きい場合に返されます。
  • MEMORY_E この関数またはサブルーチンでメモリ割り当てが失敗した場合に返されます。

Exmaple

WOLFSSL_CTX* ctx =  WOLFSSL_CTX_new( protocol );
byte* p;
byte* g;
word32 pSz = (word32)sizeof(p)/sizeof(byte);
word32 gSz = (word32)sizeof(g)/sizeof(byte);
…
int ret =  wolfSSL_CTX_SetTmpDH(ctx, p, pSz, g, gSz);

if(ret != SSL_SUCCESS){
    // 失敗ケース
}

function wolfSSL_CTX_SetTmpDH_buffer

int wolfSSL_CTX_SetTmpDH_buffer(
    WOLFSSL_CTX * ctx,
    const unsigned char * b,
    long sz,
    int format
)

wolfSSL_SetTmpDH_buffer_wrapperを呼び出すラッパー関数です。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • buf バッファとして割り当てられ、wolfSSL_SetTmpDH_buffer_wrapperに渡される定数unsigned char型へのポインタ。
  • sz wolfSSL_SetTmpDH_file_wrapper()のfnameパラメータから導出されるlong整数型。
  • format wolfSSL_SetTmpDH_file_wrapper()から渡される整数型。

See:

Return:

  • 0 実行が成功した場合に返されます。
  • BAD_FUNC_ARG ctxまたはbufパラメータがNULLの場合に返されます。
  • MEMORY_E メモリ割り当てエラーがある場合。
  • SSL_BAD_FILETYPE formatが正しくない場合に返されます。

Example

static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
    Const char* fname, int format);
#ifdef WOLFSSL_SMALL_STACK
byte staticBuffer[1]; // ヒープ使用を強制
#else
byte* staticBuffer;
long sz = 0;
…
if(ssl){
    ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);
} else {
    ret = wolfSSL_CTX_SetTmpDH_buffer(ctx, myBuffer, sz, format);
}

function wolfSSL_CTX_SetTmpDH_file

int wolfSSL_CTX_SetTmpDH_file(
    WOLFSSL_CTX * ctx,
    const char * f,
    int format
)

この関数は、wolfSSL_SetTmpDH_file_wrapperを呼び出してサーバDiffie-Hellmanパラメータを設定します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • fname 証明書ファイルへの定数文字ポインタ。
  • format 証明書形式の表現である、wolfSSL_SetTmpDH_file_wrapper()から渡される整数型。

See:

Return:

  • SSL_SUCCESS wolfSSL_SetTmpDH_file_wrapperまたはそのサブルーチンのいずれかが正常に返された場合に返されます。
  • MEMORY_E サブルーチンで動的メモリの割り当てが失敗した場合に返されます。
  • BAD_FUNC_ARG ctxまたはfnameパラメータがNULLの場合、またはサブルーチンにNULL引数が渡された場合に返されます。
  • SSL_BAD_FILE 証明書ファイルを開けない場合、またはwolfSSL_SetTmpDH_file_wrapperからのファイルに対する一連のチェックが失敗した場合に返されます。
  • SSL_BAD_FILETYPE wolfSSL_SetTmpDH_buffer_wrapper()から、形式がPEMでもASN.1でもない場合に返されます。
  • DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のminDhKeySzメンバの値より小さい場合に返されます。
  • DH_KEY_SIZE_E DHパラメータの鍵サイズがWOLFSSL_CTX構造体のmaxDhKeySzメンバの値より大きい場合に返されます。
  • SIDE_ERROR サーバ側でない場合、wolfSSL_SetTmpDH()で返されます。
  • SSL_NO_PEM_HEADER PEMヘッダがない場合、PemToDerから返されます。
  • SSL_FATAL_ERROR メモリコピーの失敗がある場合、PemToDerから返されます。

Example

#define dhParam     "certs/dh2048.pem"
#DEFINE aSSERTiNTne(x, y)     AssertInt(x, y, !=, ==)
WOLFSSL_CTX* ctx;
…
AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method()))
…
AssertIntNE(SSL_SUCCESS, wolfSSL_CTX_SetTmpDH_file(NULL, dhParam,
    SSL_FILETYPE_PEM));

function wolfSSL_CTX_SetMinDhKey_Sz

int wolfSSL_CTX_SetMinDhKey_Sz(
    WOLFSSL_CTX * ctx,
    word16 
)

この関数は、WOLFSSL_CTX構造体のminDhKeySzメンバにアクセスして、Diffie-Hellman鍵サイズの最小サイズ(ビット単位)を設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • keySz_bits 最小DH鍵サイズをビット単位で設定するために使用されるword16型。WOLFSSL_CTX構造体はこの情報をminDhKeySzメンバに保持します。

See:

Return:

  • SSL_SUCCESS 関数が正常に完了した場合に返されます。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはkeySz_bitsが16,000より大きいか8で割り切れない場合に返されます。

Example

public static int CTX_SetMinDhKey_Sz(IntPtr ctx, short minDhKey){
    …
    return wolfSSL_CTX_SetMinDhKey_Sz(local_ctx, minDhKeyBits);

function wolfSSL_SetMinDhKey_Sz

int wolfSSL_SetMinDhKey_Sz(
    WOLFSSL * ssl,
    word16 keySz_bits
)

WOLFSSL構造体内のDiffie-Hellman鍵の最小サイズ(ビット単位)を設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • keySz_bits 最小DH鍵サイズをビット単位で設定するために使用されるword16型。WOLFSSL_CTX構造体はこの情報をminDhKeySzメンバに保持します。

See:

Return:

  • SSL_SUCCESS 最小サイズが正常に設定されました。
  • BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはkeySz_bitsが16,000より大きいか8で割り切れない場合。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
word16 keySz_bits;
...
if(wolfSSL_SetMinDhKey_Sz(ssl, keySz_bits) != SSL_SUCCESS){
    // 設定に失敗しました
}

function wolfSSL_CTX_SetMaxDhKey_Sz

int wolfSSL_CTX_SetMaxDhKey_Sz(
    WOLFSSL_CTX * ctx,
    word16 keySz_bits
)

この関数は、WOLFSSL_CTX構造体のmaxDhKeySzメンバにアクセスして、Diffie-Hellman鍵サイズの最大サイズ(ビット単位)を設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • keySz_bits 最大DH鍵サイズをビット単位で設定するために使用されるword16型。WOLFSSL_CTX構造体はこの情報をmaxDhKeySzメンバに保持します。

See:

Return:

  • SSL_SUCCESS 関数が正常に完了した場合に返されます。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはkeySz_bitsが16,000より大きいか8で割り切れない場合に返されます。

Example

public static int CTX_SetMaxDhKey_Sz(IntPtr ctx, short maxDhKey){
    …
    return wolfSSL_CTX_SetMaxDhKey_Sz(local_ctx, keySz_bits);

function wolfSSL_SetMaxDhKey_Sz

int wolfSSL_SetMaxDhKey_Sz(
    WOLFSSL * ssl,
    word16 keySz_bits
)

WOLFSSL構造体内のDiffie-Hellman鍵の最大サイズ(ビット単位)を設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • keySz 最大DH鍵のビットサイズを表すword16型。

See:

Return:

  • SSL_SUCCESS 最大サイズが正常に設定されました。
  • BAD_FUNC_ARG WOLFSSL構造体がNULLの場合、またはkeySzパラメータが許容サイズより大きいか8で割り切れない場合。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
word16 keySz;
...
if(wolfSSL_SetMaxDhKey(ssl, keySz) != SSL_SUCCESS){
    // 設定に失敗しました
}

function wolfSSL_GetDhKey_Sz

int wolfSSL_GetDhKey_Sz(
    WOLFSSL * 
)

options構造体のメンバであるdhKeySzの値(ビット単位)を返します。この値は、Diffie-Hellman鍵サイズをバイト単位で表します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See:

Return:

  • dhKeySz ssl->options.dhKeySzに保持されている値を返します。これはビット単位のサイズを表す整数値です。
  • BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int dhKeySz;
...
dhKeySz = wolfSSL_GetDhKey_Sz(ssl);

if(dhKeySz == BAD_FUNC_ARG || dhKeySz <= 0){
    // 失敗ケース
} else {
    // dhKeySzは鍵のサイズを保持しています
}

function wolfSSL_CTX_SetMinRsaKey_Sz

int wolfSSL_CTX_SetMinRsaKey_Sz(
    WOLFSSL_CTX * ctx,
    short keySz
)

WOLFSSL_CTX構造体とWOLFSSL_CERT_MANAGER構造体の両方で最小RSA鍵サイズを設定します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • keySz ctx構造体とcm構造体のminRsaKeySzに格納され、バイトに変換されるshort整数型。

See: wolfSSL_SetMinRsaKey_Sz

Return:

  • SSL_SUCCESS 関数の実行が成功した場合に返されます。
  • BAD_FUNC_ARG ctx構造体がNULLの場合、またはkeySzがゼロ未満か8で割り切れない場合に返されます。

Example

WOLFSSL_CTX* ctx = SSL_CTX_new(method);
(void)minDhKeyBits;
ourCert = myoptarg;
…
minDhKeyBits = atoi(myoptarg);
…
if(wolfSSL_CTX_SetMinRsaKey_Sz(ctx, minRsaKeyBits) != SSL_SUCCESS){
    …

function wolfSSL_SetMinRsaKey_Sz

int wolfSSL_SetMinRsaKey_Sz(
    WOLFSSL * ssl,
    short keySz
)

WOLFSSL構造体にあるRSAの最小許容鍵サイズをビット単位で設定します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • keySz 最小鍵をビット単位で表すshort整数値。

See: wolfSSL_CTX_SetMinRsaKey_Sz

Return:

  • SSL_SUCCESS 最小値が正常に設定されました。
  • BAD_FUNC_ARG ssl構造体がNULLの場合、またはksySzがゼロ未満か8で割り切れない場合に返されます。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
short keySz;
…

int isSet =  wolfSSL_SetMinRsaKey_Sz(ssl, keySz);
if(isSet != SSL_SUCCESS){
    設定に失敗しました
}

function wolfSSL_CTX_SetMinEccKey_Sz

int wolfSSL_CTX_SetMinEccKey_Sz(
    WOLFSSL_CTX * ssl,
    short keySz
)

WOLF_CTX構造体とWOLFSSL_CERT_MANAGER構造体でECC鍵の最小サイズをビット単位で設定します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • keySz 最小ECC鍵サイズをビット単位で表すshort整数型。

See: wolfSSL_SetMinEccKey_Sz

Return:

  • SSL_SUCCESS 実行が成功し、minEccKeySzメンバが設定された場合に返されます。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、またはkeySzが負の値か8で割り切れない場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
short keySz; // 最小鍵サイズ
…
if(wolfSSL_CTX_SetMinEccKey(ctx, keySz) != SSL_SUCCESS){
    // 最小鍵サイズの設定に失敗しました
}

function wolfSSL_SetMinEccKey_Sz

int wolfSSL_SetMinEccKey_Sz(
    WOLFSSL * ssl,
    short keySz
)

options構造体のminEccKeySzメンバの値を設定します。options構造体はWOLFSSL構造体のメンバであり、sslパラメータを通じてアクセスされます。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • keySz 最小ECC鍵サイズを設定するために使用される値。options構造体に値を設定します。

See:

Return:

  • SSL_SUCCESS 関数がoptions構造体のminEccKeySzメンバを正常に設定した場合。
  • BAD_FUNC_ARG WOLFSSL_CTX構造体がNULLの場合、または鍵サイズ(keySz)が0未満か8で割り切れない場合。

Example

WOLFSSL* ssl = wolfSSL_new(ctx); // 新しいセッション
short keySz = 999; // 許容される最小鍵サイズに設定すべきです
...
if(wolfSSL_SetMinEccKey_Sz(ssl, keySz) != SSL_SUCCESS){
    // 失敗ケース
}

function wolfSSL_make_eap_keys

int wolfSSL_make_eap_keys(
    WOLFSSL * ssl,
    void * key,
    unsigned int len,
    const char * label
)

この関数は、マスターシークレットから鍵材料を導出するためにEAP_TLSとEAP-TTLSによって使用されます。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
  • key p_hash関数の結果を保持するvoidポインタ変数。
  • len key変数の長さを表すunsigned整数。
  • label wc_PRF()でコピーされる定数charポインタ。

See:

Return:

  • BUFFER_E バッファの実際のサイズが許容される最大サイズを超えた場合に返されます。
  • MEMORY_E メモリ割り当てでエラーが発生した場合に返されます。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);;
void* key;
unsigned int len;
const char* label;
…
return wolfSSL_make_eap_keys(ssl, key, len, label);

function wolfSSL_CTX_load_verify_buffer

int wolfSSL_CTX_load_verify_buffer(
    WOLFSSL_CTX * ctx,
    const unsigned char * in,
    long sz,
    int format
)

この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • in CA証明書バッファへのポインタ。
  • sz 入力CA証明書バッファ(in)のサイズ。
  • format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
  • BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...

ret = wolfSSL_CTX_load_verify_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // バッファからのCA証明書のロードエラー
}
...

function wolfSSL_CTX_load_verify_buffer_ex

int wolfSSL_CTX_load_verify_buffer_ex(
    WOLFSSL_CTX * ctx,
    const unsigned char * in,
    long sz,
    int format,
    int userChain,
    word32 flags
)

この関数はCA証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。_ex版はPR 2413で追加され、userChainとflagsの追加引数をサポートします。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • in CA証明書バッファへのポインタ。
  • sz 入力CA証明書バッファ(in)のサイズ。
  • format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
  • userChain 形式WOLFSSL_FILETYPE_ASN1を使用している場合、これを非ゼロに設定すると、DERのチェーンが提示されていることを示します。
  • flags ssl.hのWOLFSSL_LOAD_VERIFY_DEFAULT_FLAGS付近を参照してください。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
  • BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...

// 期限切れ証明書を強制的にロードする例
ret = wolfSSL_CTX_load_verify_buffer_ex(ctx, certBuff, sz, SSL_FILETYPE_PEM,
    0, (WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY));
if (ret != SSL_SUCCESS) {
    // バッファからのCA証明書のロードエラー
}
...

function wolfSSL_CTX_load_verify_chain_buffer_format

int wolfSSL_CTX_load_verify_chain_buffer_format(
    WOLFSSL_CTX * ctx,
    const unsigned char * in,
    long sz,
    int format
)

この関数はCA証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。形式がPEMであれば、1つのバッファに複数のCA証明書をロードできます。適切な使用方法については例を参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • in CA証明書バッファへのポインタ。
  • sz 入力CA証明書バッファ(in)のサイズ。
  • format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
  • BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...

ret = wolfSSL_CTX_load_verify_chain_buffer_format(ctx,
                     certBuff, sz, WOLFSSL_FILETYPE_ASN1);
if (ret != SSL_SUCCESS) {
    // バッファからのCA証明書のロードエラー
}
...

function wolfSSL_CTX_use_certificate_buffer

int wolfSSL_CTX_use_certificate_buffer(
    WOLFSSL_CTX * ctx,
    const unsigned char * in,
    long sz,
    int format
)

この関数は証明書バッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • in ロードする証明書を含む入力バッファ。
  • sz 入力バッファのサイズ。
  • format 入力バッファ(in)に格納されている証明書の形式。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
byte certBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_use_certificate_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // バッファからの証明書のロードエラー
}
...

function wolfSSL_CTX_use_PrivateKey_buffer

int wolfSSL_CTX_use_PrivateKey_buffer(
    WOLFSSL_CTX * ctx,
    const unsigned char * in,
    long sz,
    int format
)

この関数は秘密鍵バッファをSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファの形式タイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • in ロードする秘密鍵を含む入力バッファ。
  • sz 入力バッファのサイズ。
  • format 入力バッファ(in)に格納されている秘密鍵の形式。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
  • NO_PASSWORD 鍵ファイルが暗号化されているがパスワードが提供されていない場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
byte keyBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx, keyBuff, sz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // バッファからの秘密鍵のロードエラー
}
...

function wolfSSL_CTX_use_certificate_chain_buffer

int wolfSSL_CTX_use_certificate_chain_buffer(
    WOLFSSL_CTX * ctx,
    const unsigned char * in,
    long sz
)

この関数は証明書チェーンバッファをWOLFSSLコンテキストにロードします。バッファ非対応版と同様に動作しますが、ファイルの代わりにバッファを入力として呼び出せる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEM形式で、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。

Parameters:

  • ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
  • in ロードするPEM形式の証明書チェーンを含む入力バッファ。
  • sz 入力バッファのサイズ。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルの形式が間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足の状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードが失敗した場合に返されます。
  • BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。

Example

int ret = 0;
WOLFSSL_CTX* ctx;
byte certChainBuff[...];
long sz = sizeof(certBuff);
...
ret = wolfSSL_CTX_use_certificate_chain_buffer(ctx, certChainBuff, sz);
if (ret != SSL_SUCCESS) {
    // バッファから証明書チェーンの読み込みに失敗
}
...

function wolfSSL_use_certificate_buffer

int wolfSSL_use_certificate_buffer(
    WOLFSSL * ssl,
    const unsigned char * in,
    long sz,
    int format
)

この関数は、証明書バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • in ロードする証明書を含むバッファ。
  • sz バッファ内の証明書のサイズ。
  • format ロードする証明書のフォーマット。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。

Example

int ret;
byte certBuff[...];
WOLFSSL* ssl = 0;
long buffSz = sizeof(certBuff);
...

ret = wolfSSL_use_certificate_buffer(ssl, certBuff, buffSz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // バッファから証明書の読み込みに失敗
}

function wolfSSL_use_PrivateKey_buffer

int wolfSSL_use_PrivateKey_buffer(
    WOLFSSL * ssl,
    const unsigned char * in,
    long sz,
    int format
)

この関数は、秘密鍵バッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。formatはバッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。適切な使用方法については例を参照してください。

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • in ロードする秘密鍵を含むバッファ。
  • sz バッファ内の秘密鍵のサイズ。
  • format ロードする秘密鍵のフォーマット。指定可能な値はSSL_FILETYPE_ASN1またはSSL_FILETYPE_PEMです。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。
  • NO_PASSWORD 鍵ファイルが暗号化されているがパスワードが提供されていない場合に返されます。

Example

int ret;
byte keyBuff[...];
WOLFSSL* ssl = 0;
long buffSz = sizeof(certBuff);
...
ret = wolfSSL_use_PrivateKey_buffer(ssl, keyBuff, buffSz, SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // バッファから秘密鍵の読み込みに失敗
}

function wolfSSL_use_certificate_chain_buffer

int wolfSSL_use_certificate_chain_buffer(
    WOLFSSL * ssl,
    const unsigned char * in,
    long sz
)

この関数は、証明書チェーンバッファをWOLFSSLオブジェクトにロードします。バッファなしバージョンと同様に動作しますが、ファイルの代わりにバッファを入力として呼び出すことができる点が異なります。バッファはサイズszのin引数によって提供されます。バッファはPEMフォーマットである必要があり、サブジェクトの証明書から始まり、ルート証明書で終わる必要があります。適切な使用方法については例を参照してください。

Parameters:

  • ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
  • in ロードする証明書を含むバッファ。
  • sz バッファ内の証明書のサイズ。

See:

Return:

  • SSL_SUCCES 成功時。
  • SSL_BAD_FILETYPE ファイルのフォーマットが間違っている場合に返されます。
  • SSL_BAD_FILE ファイルが存在しない、読み取れない、または破損している場合に返されます。
  • MEMORY_E メモリ不足状態が発生した場合に返されます。
  • ASN_INPUT_E ファイルのBase16デコードに失敗した場合に返されます。
  • BUFFER_E チェーンバッファが受信バッファより大きい場合に返されます。

Example

int ret;
byte certChainBuff[...];
WOLFSSL* ssl = 0;
long buffSz = sizeof(certBuff);
...
ret = wolfSSL_use_certificate_chain_buffer(ssl, certChainBuff, buffSz);
if (ret != SSL_SUCCESS) {
    // バッファから証明書チェーンの読み込みに失敗
}

function wolfSSL_UnloadCertsKeys

int wolfSSL_UnloadCertsKeys(
    WOLFSSL * 
)

この関数は、SSLが所有する証明書または鍵をアンロードします。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See: wolfSSL_CTX_UnloadCAs

Return:

  • SSL_SUCCESS 関数が正常に実行された場合に返されます。
  • BAD_FUNC_ARG WOLFSSLオブジェクトがNULLの場合に返されます。

Example

WOLFSSL* ssl = wolfSSL_new(ctx);
...
int unloadKeys = wolfSSL_UnloadCertsKeys(ssl);
if(unloadKeys != SSL_SUCCESS){
    // 失敗ケース
}

function wolfSSL_GetIVSize

int wolfSSL_GetIVSize(
    WOLFSSL * 
)

WOLFSSL構造体に保持されているspecs構造体のiv_sizeメンバを返します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See:

Return:

  • iv_size ssl->specs.iv_sizeに保持されている値を返します。
  • BAD_FUNC_ARG WOLFSSL構造体がNULLの場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int ivSize;
...
ivSize = wolfSSL_GetIVSize(ssl);

if(ivSize > 0){
    // ivSizeはspecs.iv_size値を保持しています。
}

function wolfSSL_KeepArrays

void wolfSSL_KeepArrays(
    WOLFSSL * 
)

通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクが始まる前にこの関数を呼び出すと、wolfSSLは一時配列を解放しなくなります。一時配列はwolfSSL_get_keys()やPSKヒントなどに必要になる場合があります。ユーザーが一時配列を使い終わったら、wolfSSL_FreeArrays()を呼び出してリソースを即座に解放するか、あるいは関連するSSLオブジェクトが解放されるときにリソースが解放されます。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See: wolfSSL_FreeArrays

Return: none 戻り値なし。

Example

WOLFSSL* ssl;
...
wolfSSL_KeepArrays(ssl);

function wolfSSL_FreeArrays

void wolfSSL_FreeArrays(
    WOLFSSL * 
)

通常、SSLハンドシェイクの終了時に、wolfSSLは一時配列を解放します。ハンドシェイクの前にwolfSSL_KeepArrays()が呼び出されていた場合、wolfSSLは一時配列を解放しません。この関数は一時配列を明示的に解放し、ユーザーが一時配列を使い終わり、SSLオブジェクトが解放されるのを待たずにこれらのリソースを解放したい場合に呼び出す必要があります。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See: wolfSSL_KeepArrays

Return: none 戻り値なし。

Example

WOLFSSL* ssl;
...
wolfSSL_FreeArrays(ssl);

function wolfSSL_DeriveTlsKeys

int wolfSSL_DeriveTlsKeys(
    unsigned char * key_data,
    word32 keyLen,
    const unsigned char * ms,
    word32 msLen,
    const unsigned char * sr,
    const unsigned char * cr,
    int tls1_2,
    int hash_type
)

TLS鍵を導出するための外部向けラッパー。

Parameters:

  • key_data DeriveTlsKeysで割り当てられ、最終ハッシュを保持するためにwc_PRFに渡されるバイトポインタ。
  • keyLen DeriveTlsKeysでWOLFSSL構造体のspecsメンバから導出されるword32型。
  • ms WOLFSSL構造体内のarrays構造体に保持されているマスターシークレットを保持する定数ポインタ型。
  • msLen 列挙定義SECRET_LENでマスターシークレットの長さを保持するword32型。
  • sr WOLFSSL構造体内のarrays構造体のserverRandomメンバへの定数バイトポインタ。
  • cr WOLFSSL構造体内のarrays構造体のclientRandomメンバへの定数バイトポインタ。
  • tls1_2 IsAtLeastTLSv1_2()から返される整数型。
  • hash_type WOLFSSL構造体に保持されている整数型。

See:

  • wc_PRF
  • DeriveTlsKeys
  • IsAtLeastTLSv1_2

Return:

  • 0 成功時に返されます。
  • BUFFER_E labLenとseedLenの合計(合計サイズを計算)が最大サイズを超えた場合に返されます。
  • MEMORY_E メモリの割り当てに失敗した場合に返されます。

Example

int DeriveTlsKeys(WOLFSSL* ssl){
    int ret;
    …
    ret = wolfSSL_DeriveTlsKeys(key_data, length, ssl->arrays->masterSecret,
        SECRET_LEN, ssl->arrays->clientRandom,
        IsAtLeastTLSv1_2(ssl), ssl->specs.mac_algorithm);
    …
}

function wolfSSL_X509_get_ext_by_NID

int wolfSSL_X509_get_ext_by_NID(
    const WOLFSSL_X509 * x509,
    int nid,
    int lastPos
)

この関数は、渡されたNID値に一致する拡張インデックスを検索して返します。

Parameters:

  • x509 拡張を検索するために解析する証明書。
  • nid 見つける拡張OID。
  • lastPos lastPos以降の拡張から検索を開始します。 最初は-1に設定します。

Return:

  • >= 0 成功時、拡張インデックスが返されます。
  • -1 拡張が見つからない場合、またはエラーが発生した場合。

Example

const WOLFSSL_X509* x509;
int lastPos = -1;
int idx;

idx = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, lastPos);

function wolfSSL_X509_get_ext_d2i

void * wolfSSL_X509_get_ext_d2i(
    const WOLFSSL_X509 * x509,
    int nid,
    int * c,
    int * idx
)

この関数は渡されたNID値に一致する拡張を検索して返します。

Parameters:

  • x509 拡張を解析する証明書。
  • nid 検索する拡張OID。
  • c NULLでない場合、複数の拡張が見つかった場合は-2、見つからなかった場合は-1、見つかってクリティカルでない場合は0、見つかってクリティカルな場合は1に設定されます。
  • idx NULLの場合は最初に一致した拡張を返します。それ以外の場合、x509に格納されていなければidxから開始します。

See: wolfSSL_sk_ASN1_OBJECT_free

Return:

  • pointer 成功した場合、STACK_OF(WOLFSSL_ASN1_OBJECT)ポインタが返されます。
  • NULL 拡張が見つからない、またはエラーが発生した場合。

Example

const WOLFSSL_X509* x509;
int c;
int idx = 0;
STACK_OF(WOLFSSL_ASN1_OBJECT)* sk;

sk = wolfSSL_X509_get_ext_d2i(x509, NID_basic_constraints, &c, &idx);
// skがNULLでないか確認してから使用。使用後はskを解放する必要があります

function wolfSSL_X509_digest

int wolfSSL_X509_digest(
    const WOLFSSL_X509 * x509,
    const WOLFSSL_EVP_MD * digest,
    unsigned char * buf,
    unsigned int * len
)

この関数はDER証明書のハッシュを返します。

Parameters:

  • x509 ハッシュを取得する証明書。
  • digest 使用するハッシュアルゴリズム。
  • buf ハッシュを保持するバッファ。
  • len バッファの長さ。

See: none

Return:

  • SSL_SUCCESS ハッシュの作成に成功した場合。
  • SSL_FAILURE 不正な入力またはハッシュ失敗時に返されます。

Example

WOLFSSL_X509* x509;
unsigned char buffer[64];
unsigned int bufferSz;
int ret;

ret = wolfSSL_X509_digest(x509, wolfSSL_EVP_sha256(), buffer, &bufferSz);
// ret値を確認

function wolfSSL_use_PrivateKey

int wolfSSL_use_PrivateKey(
    WOLFSSL * ssl,
    WOLFSSL_EVP_PKEY * pkey
)

WOLFSSL構造体の秘密鍵を設定するために使用されます。

Parameters:

  • ssl 引数を設定するWOLFSSL構造体。
  • pkey 使用する秘密鍵。

See:

Return:

  • SSL_SUCCESS 引数の設定に成功した場合。
  • SSL_FAILURE NULLのsslが渡された場合。すべてのエラーケースは負の値になります。

Example

WOLFSSL* ssl;
WOLFSSL_EVP_PKEY* pkey;
int ret;
// sslオブジェクトを作成して秘密鍵をセットアップ
ret  = wolfSSL_use_PrivateKey(ssl, pkey);
// ret値を確認

function wolfSSL_use_PrivateKey_ASN1

int wolfSSL_use_PrivateKey_ASN1(
    int pri,
    WOLFSSL * ssl,
    unsigned char * der,
    long derSz
)

WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式の鍵バッファが必要です。

Parameters:

  • pri 秘密鍵のタイプ。
  • ssl 引数を設定するWOLFSSL構造体。
  • der DER鍵を保持するバッファ。
  • derSz derバッファのサイズ。

See:

Return:

  • SSL_SUCCESS 秘密鍵の解析と設定に成功した場合。
  • SSL_FAILURE NULLのsslが渡された場合。すべてのエラーケースは負の値になります。

Example

WOLFSSL* ssl;
unsigned char* pkey;
long pkeySz;
int ret;
// sslオブジェクトを作成して秘密鍵をセットアップ
ret  = wolfSSL_use_PrivateKey_ASN1(1, ssl, pkey, pkeySz);
// ret値を確認

function wolfSSL_use_RSAPrivateKey_ASN1

int wolfSSL_use_RSAPrivateKey_ASN1(
    WOLFSSL * ssl,
    unsigned char * der,
    long derSz
)

WOLFSSL構造体の秘密鍵を設定するために使用されます。DER形式のRSA鍵バッファが必要です。

Parameters:

  • ssl 引数を設定するWOLFSSL構造体。
  • der DER鍵を保持するバッファ。
  • derSz derバッファのサイズ。

See:

Return:

  • SSL_SUCCESS 秘密鍵の解析と設定に成功した場合。
  • SSL_FAILURE NULLのsslが渡された場合。すべてのエラーケースは負の値になります。

Example

WOLFSSL* ssl;
unsigned char* pkey;
long pkeySz;
int ret;
// sslオブジェクトを作成してRSA秘密鍵をセットアップ
ret  = wolfSSL_use_RSAPrivateKey_ASN1(ssl, pkey, pkeySz);
// ret値を確認

function wolfSSL_DSA_dup_DH

WOLFSSL_DH * wolfSSL_DSA_dup_DH(
    const WOLFSSL_DSA * r
)

この関数はdsaのパラメータを新しく作成されたWOLFSSL_DH構造体に複製します。

Parameters:

  • dsa 複製するWOLFSSL_DSA構造体。

See: none

Return:

  • WOLFSSL_DH 複製に成功した場合、WOLFSSL_DH構造体を返します。
  • NULL 失敗時。

Example

WOLFSSL_DH* dh;
WOLFSSL_DSA* dsa;
// dsaをセットアップ
dh = wolfSSL_DSA_dup_DH(dsa);

// dhがnullでないか確認

function wolfSSL_d2i_X509_bio

WOLFSSL_X509 * wolfSSL_d2i_X509_bio(
    WOLFSSL_BIO * bio,
    WOLFSSL_X509 ** x509
)

この関数はbioからDERバッファを取得し、それをWOLFSSL_X509構造体に変換します。

Parameters:

  • bio DER証明書バッファを持つWOLFSSL_BIO構造体へのポインタ。
  • x509 作成された新しいWOLFSSL_X509構造体に設定されるポインタ。

See: none

Return:

  • pointer 成功時にWOLFSSL_X509構造体ポインタを返します。
  • Null 失敗時にNULLを返します。

Example

WOLFSSL_BIO* bio;
WOLFSSL_X509* x509;
// DERをbioにロード
x509 = wolfSSL_d2i_X509_bio(bio, NULL);
// または
wolfSSL_d2i_X509_bio(bio, &x509);
// 返されたx509を使用(NULLをチェック)

function wolfSSL_PEM_read_bio_X509_AUX

WOLFSSL_X509 * wolfSSL_PEM_read_bio_X509_AUX(
    WOLFSSL_BIO * bp,
    WOLFSSL_X509 ** x,
    wc_pem_password_cb * cb,
    void * u
)

この関数はwolfSSL_PEM_read_bio_X509と同じように動作します。AUXは、信頼された/拒否されたユースケースや人間が読みやすいフレンドリ名などの追加情報を含むことを意味します。

Parameters:

  • bp PEMバッファを取得するWOLFSSL_BIO構造体。
  • x 関数の副作用によってWOLFSSL_X509を設定する場合。
  • cb パスワードコールバック。
  • u NULL終端のユーザーパスワード。

See: wolfSSL_PEM_read_bio_X509

Return:

  • WOLFSSL_X509 PEMバッファの解析に成功した場合、WOLFSSL_X509構造体が返されます。
  • Null PEMバッファの解析に失敗した場合。

Example

WOLFSSL_BIO* bio;
WOLFSSL_X509* x509;
// bioをセットアップ
X509 = wolfSSL_PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL);
//x509がnullでないことを確認してから使用

function wolfSSL_CTX_set_tmp_dh

long wolfSSL_CTX_set_tmp_dh(
    WOLFSSL_CTX * ctx,
    WOLFSSL_DH * dh
)

WOLFSSL_CTX構造体のdhメンバをDiffie-Hellmanパラメータで初期化します。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • dh WOLFSSL_DH構造体へのポインタ。

See: wolfSSL_BN_bn2bin

Return:

  • SSL_SUCCESS 関数が正常に実行された場合に返されます。
  • BAD_FUNC_ARG ctxまたはdh構造体がNULLの場合に返されます。
  • SSL_FATAL_ERROR 構造体の値の設定にエラーがあった場合に返されます。
  • MEMORY_E メモリの割り当てに失敗した場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
WOLFSSL_DH* dh;
…
return wolfSSL_CTX_set_tmp_dh(ctx, dh);

function wolfSSL_PEM_read_bio_DSAparams

WOLFSSL_DSA * wolfSSL_PEM_read_bio_DSAparams(
    WOLFSSL_BIO * bp,
    WOLFSSL_DSA ** x,
    wc_pem_password_cb * cb,
    void * u
)

この関数は、bio内のPEMバッファからDSAパラメータを取得します。

Parameters:

  • bio PEMメモリポインタを取得するためのWOLFSSL_BIO構造体へのポインタ。
  • x 新しいWOLFSSL_DSA構造体に設定されるポインタ。
  • cb パスワードコールバック関数。
  • u null終端のパスワード文字列。

See: none

Return:

  • WOLFSSL_DSA PEMバッファの解析に成功した場合、WOLFSSL_DSA構造体が作成されて返されます。
  • Null PEMバッファの解析に失敗した場合。

Example

WOLFSSL_BIO* bio;
WOLFSSL_DSA* dsa;
// bioをセットアップ
dsa = wolfSSL_PEM_read_bio_DSAparams(bio, NULL, NULL, NULL);

// dsaがNULLでないことを確認してからdsaを使用

function WOLF_STACK_OF

WOLF_STACK_OF(
    WOLFSSL_X509 
) const

この関数は、ピアの証明書チェーンを取得します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。

See:

Return:

  • pointer ピアのCertificateスタックへのポインタを返します。
  • NULL ピア証明書がない場合に返されます。

Example

WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
...
wolfSSL_connect(ssl);
STACK_OF(WOLFSSL_X509)* chain = wolfSSL_get_peer_cert_chain(ssl);
if(chain){
    // ピア証明書チェーンへのポインタがあります
}

function wolfSSL_X509_get_next_altname

char * wolfSSL_X509_get_next_altname(
    WOLFSSL_X509 * 
)

この関数は、ピア証明書から次の代替名(もしあれば)を返します。

Parameters:

  • cert wolfSSL_X509構造体へのポインタ。

See:

Return:

  • NULL 次の代替名がない場合。
  • cert->altNamesNext->name WOLFSSL_X509構造体から返されます。 altNameリストからの文字列値が存在する場合に返されます。

Example

WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
                                                    DYNAMIC_TYPE_X509);
…
int x509NextAltName = wolfSSL_X509_get_next_altname(x509);
if(x509NextAltName == NULL){
    //別のalt nameはありません。
}

function wolfSSL_X509_get_notBefore

WOLFSSL_ASN1_TIME * wolfSSL_X509_get_notBefore(
    WOLFSSL_X509 * 
)

この関数は、x509がNULLかどうかを確認し、NULLでない場合はx509構造体のnotBeforeメンバを返します。

Parameters:

  • x509 WOLFSSL_X509構造体へのポインタ。

See: wolfSSL_X509_get_notAfter

Return:

  • pointer x509構造体のnotBeforeメンバへのASN1_TIMEを持つ構造体へのポインタ。
  • NULL x509構造体がNULLの場合、関数はNULLを返します。

Example

WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALLOC(sizeof(WOLFSSL_X509), NULL,
DYNAMIC_TYPE_X509) ;
…
const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notBefore(x509);
if(notAfter == NULL){
    //x509オブジェクトがNULLでした。
}

Updated on 2025-12-12 at 03:08:16 +0000