コンテンツにスキップ

OpenSSL API

Functions

Name
int wolfSSL_BN_mod_exp(WOLFSSL_BIGNUM * r, const WOLFSSL_BIGNUM * a, const WOLFSSL_BIGNUM * p, const WOLFSSL_BIGNUM * m, WOLFSSL_BN_CTX * ctx)
この関数は次の数学演算を実行します "r = (a^p) % m"。
const WOLFSSL_EVP_CIPHER * wolfSSL_EVP_des_ede3_ecb(void )
それぞれのWOLFSSL_EVP_CIPHERポインタのゲッター関数。これらの暗号文字列を設定するには、まずプログラムでwolfSSL_EVP_init()を一度呼び出す必要があります。wolfSSL_EVP_des_ede3_ecb()の場合、WOLFSSL_DES_ECBマクロが定義されている必要があります。
const WOLFSSL_EVP_CIPHER * wolfSSL_EVP_des_cbc(void )
それぞれのWOLFSSL_EVP_CIPHERポインタのゲッター関数。これらの暗号文字列を設定するには、まずプログラムでwolfSSL_EVP_init()を一度呼び出す必要があります。wolfSSL_EVP_des_ecb()の場合、WOLFSSL_DES_ECBマクロが定義されている必要があります。
int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX * ctx, const WOLFSSL_EVP_MD * type, WOLFSSL_ENGINE * impl)
WOLFSSL_EVP_MD_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_DigestInit()のラッパーです。
int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX * ctx, const WOLFSSL_EVP_CIPHER * type, WOLFSSL_ENGINE * impl, const unsigned char * key, const unsigned char * iv, int enc)
WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_CipherInit()のラッパーです。
int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX * ctx, const WOLFSSL_EVP_CIPHER * type, WOLFSSL_ENGINE * impl, const unsigned char * key, const unsigned char * iv)
WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_CipherInit()のラッパーです。暗号化フラグを暗号化に設定します。
int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX * ctx, const WOLFSSL_EVP_CIPHER * type, WOLFSSL_ENGINE * impl, const unsigned char * key, const unsigned char * iv)
WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_CipherInit()のラッパーです。暗号化フラグを復号に設定します。
int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl)
データを暗号化/復号する関数。inバッファが暗号化または復号される対象として追加され、outバッファが結果を保持します。outlは暗号化/復号された情報の長さになります。
int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl)
この関数は、パディングを追加する最終暗号操作を実行します。WOLFSSL_EVP_CIPHER_CTX構造体にWOLFSSL_EVP_CIPH_NO_PADDINGフラグが設定されている場合、1が返され、暗号化/復号は実行されません。パディングフラグが設定されている場合、ctxが暗号化に設定されているときにパディングが追加され暗号化され、復号に設定されているときにパディング値がチェックされます。
int wolfSSL_EVP_CIPHER_CTX_set_key_length(WOLFSSL_EVP_CIPHER_CTX * ctx, int keylen)
WOLFSSL_EVP_CIPHER_CTX構造体の鍵長のセッター関数。
int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX * ctx)
これはctxブロックサイズのゲッター関数です。
int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER * cipher)
これは暗号のブロックサイズのゲッター関数です。
void wolfSSL_EVP_CIPHER_CTX_set_flags(WOLFSSL_EVP_CIPHER_CTX * ctx, int flags)
WOLFSSL_EVP_CIPHER_CTX構造体のセッター関数。
void wolfSSL_EVP_CIPHER_CTX_clear_flags(WOLFSSL_EVP_CIPHER_CTX * ctx, int flags)
WOLFSSL_EVP_CIPHER_CTX構造体のクリア関数。
int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX * c, int pad)
パディングを使用するためのWOLFSSL_EVP_CIPHER_CTX構造体のセッター関数。
unsigned long wolfSSL_EVP_CIPHER_CTX_flags(const WOLFSSL_EVP_CIPHER_CTX * ctx)
WOLFSSL_EVP_CIPHER_CTX構造体のゲッター関数。v1.1.0で非推奨
int wolfSSL_PEM_write_bio_PrivateKey(WOLFSSL_BIO * bio, WOLFSSL_EVP_PKEY * key, const WOLFSSL_EVP_CIPHER * cipher, unsigned char * passwd, int len, wc_pem_password_cb * cb, void * arg)
この関数は、WOLFSSL_BIO構造体にキーをPEM形式で書き込みます。
int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX * ctx, const char * file, int format)
この関数は、SSL接続で使用されるプライベートRSA鍵をSSLコンテキスト(WOLFSSL_CTX)に読み込みます。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされた場合(–enable_opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_CTX_use_PrivateKey_file()関数と同一です。file引数には、format引数で指定された形式のRSAプライベート鍵ファイルへのポインタが含まれます。
int wolfSSL_use_certificate_file(WOLFSSL * ssl, const char * file, int format)
この関数は、証明書ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。証明書ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。
int wolfSSL_use_PrivateKey_file(WOLFSSL * ssl, const char * file, int format)
この関数は、プライベート鍵ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。鍵ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。
int wolfSSL_use_certificate_chain_file(WOLFSSL * ssl, const char * file)
この関数は、証明書のチェーンをSSLセッション(WOLFSSL構造体)にロードします。証明書チェーンを含むファイルはfile引数で指定され、PEM形式の証明書を含んでいる必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。
int wolfSSL_use_RSAPrivateKey_file(WOLFSSL * ssl, const char * file, int format)
この関数は、SSL接続で使用されるプライベートRSA鍵をSSLセッション(WOLFSSL構造体)にロードします。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされている場合(–enable_opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_use_PrivateKey_file()関数と同一です。file引数は、formatで指定された形式のRSAプライベート鍵ファイルへのポインタを含みます。
long wolfSSL_set_tlsext_status_type(WOLFSSL * s, int type)
この関数は、クライアントアプリケーションがサーバにOCSPステータスレスポンス(OCSPステープリングとも呼ばれます)を返送するよう要求する際に呼び出されます。現在、サポートされている唯一のタイプはTLSEXT_STATUSTYPE_ocspです。
WOLFSSL_X509_CHAIN * wolfSSL_get_peer_chain(WOLFSSL * ssl)
ピアの証明書チェーンを取得します。
int wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN * chain)
ピアの証明書チェーン数を取得します。
int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN * chain, int idx)
インデックス(idx)におけるピアのASN1.DER証明書の長さをバイト単位で取得します。
unsigned char * wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN * chain, int idx)
インデックス(idx)におけるピアのASN1.DER証明書を取得します。
int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN * chain, int idx, unsigned char * buf, int inLen, int * outLen)
インデックス(idx)におけるピアのPEM証明書を取得します。
const unsigned char * wolfSSL_get_sessionID(const WOLFSSL_SESSION * s)
セッションIDを取得します。セッションIDは常に32バイト長です。
int wolfSSL_X509_get_serial_number(WOLFSSL_X509 * x509, unsigned char * in, int * inOutSz)
ピアの証明書シリアル番号を取得します。シリアル番号バッファ(in)は少なくとも32バイト長であり、入力としてinOutSz引数として提供される必要があります。関数を呼び出した後、inOutSzにはinバッファに書き込まれた実際の長さ(バイト単位)が保持されます。
WC_PKCS12 * wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO * bio, WC_PKCS12 ** pkcs12)
wolfSSL_d2i_PKCS12_bio(d2i_PKCS12_bio)は、WOLFSSL_BIOからWC_PKCS12構造体へPKCS12情報をコピーします。情報は、構造体内でコンテンツ情報のリストとして分割され、オプションのMAC情報を保持する構造体も含まれます。情報がWC_PKCS12構造体内でチャンク(ただし復号されていない)に分割された後、呼び出すことによって解析および復号できます。
WC_PKCS12 * wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO * bio, WC_PKCS12 * pkcs12)
wolfSSL_i2d_PKCS12_bio(i2d_PKCS12_bio)は、WC_PKCS12構造体からWOLFSSL_BIOへ証明書情報をコピーします。
int wolfSSL_PKCS12_parse(WC_PKCS12 * pkcs12, const char * psw, WOLFSSL_EVP_PKEY pkey, WOLFSSL_X509 cert, WOLF_STACK_OF(WOLFSSL_X509) ** ca)
PKCS12は、configureコマンドに–enable_opensslextraを追加することで有効にできます。復号にトリプルDESとRC4を使用できるため、opensslextraを有効にする際にこれらの機能も有効にすることを推奨します(–enable_des3 –enable_arc4)。wolfSSLは現在RC2をサポートしていないため、RC2での復号は現在利用できません。これは、OpenSSLコマンドラインで.p12ファイルを作成する際に使用されるデフォルトの暗号化スキームで顕著になる可能性があります。wolfSSL_PKCS12_parse(PKCS12_parse)。この関数が最初に行うことは、存在する場合にMACが正しいかどうかを確認することです。MACが失敗した場合、関数は返され、保存されているコンテンツ情報の復号を試みません。この関数は、各コンテンツ情報を解析してバッグタイプを探し、バッグタイプが既知の場合、必要に応じて復号され、構築中の証明書リストまたは見つかった鍵として保存されます。すべてのバッグを解析した後、見つかった鍵は証明書リストと比較され、一致するペアが見つかります。この一致するペアは、鍵と証明書として返されます。オプションで、見つかった証明書リストはSTACK_OFの証明書として返されます。現時点では、CRL、Secret、またはSafeContentsバッグはスキップされ、解析されません。これらまたは他の「不明な」バッグがスキップされているかどうかは、デバッグ出力を表示することで確認できます。フレンドリ名などの追加属性は、PKCS12ファイルを解析する際にスキップされます。

Functions Documentation

function wolfSSL_BN_mod_exp

int wolfSSL_BN_mod_exp(
    WOLFSSL_BIGNUM * r,
    const WOLFSSL_BIGNUM * a,
    const WOLFSSL_BIGNUM * p,
    const WOLFSSL_BIGNUM * m,
    WOLFSSL_BN_CTX * ctx
)

この関数は次の数学演算を実行します "r = (a^p) % m"。

Parameters:

  • r 結果を保持する構造体。
  • a 累乗される値。
  • p aを累乗する指数。
  • m 使用する剰余。
  • ctx 現在wolfSSLでは使用されていないため、NULLにできます。

See:

  • wolfSSL_BN_new
  • wolfSSL_BN_free

Return:

  • SSL_SUCCESS 数学演算が正常に実行された場合。
  • SSL_FAILURE エラーケースが発生した場合。

Example

WOLFSSL_BIGNUM r,a,p,m;
int ret;
// big number値を設定
ret  = wolfSSL_BN_mod_exp(r, a, p, m, NULL);
// ret値を確認

function wolfSSL_EVP_des_ede3_ecb

const WOLFSSL_EVP_CIPHER * wolfSSL_EVP_des_ede3_ecb(
    void 
)

それぞれのWOLFSSL_EVP_CIPHERポインタのゲッター関数。これらの暗号文字列を設定するには、まずプログラムでwolfSSL_EVP_init()を一度呼び出す必要があります。wolfSSL_EVP_des_ede3_ecb()の場合、WOLFSSL_DES_ECBマクロが定義されている必要があります。

Parameters:

  • none パラメータなし。

See: wolfSSL_EVP_CIPHER_CTX_init

Return: pointer DES EDE3操作用のWOLFSSL_EVP_CIPHERポインタを返します。

Example

printf("block size des ede3 cbc = %d\n",
wolfSSL_EVP_CIPHER_block_size(wolfSSL_EVP_des_ede3_cbc()));
printf("block size des ede3 ecb = %d\n",
wolfSSL_EVP_CIPHER_block_size(wolfSSL_EVP_des_ede3_ecb()));

function wolfSSL_EVP_des_cbc

const WOLFSSL_EVP_CIPHER * wolfSSL_EVP_des_cbc(
    void 
)

それぞれのWOLFSSL_EVP_CIPHERポインタのゲッター関数。これらの暗号文字列を設定するには、まずプログラムでwolfSSL_EVP_init()を一度呼び出す必要があります。wolfSSL_EVP_des_ecb()の場合、WOLFSSL_DES_ECBマクロが定義されている必要があります。

Parameters:

  • none パラメータなし。

See: wolfSSL_EVP_CIPHER_CTX_init

Return: pointer DES操作用のWOLFSSL_EVP_CIPHERポインタを返します。

Example

WOLFSSL_EVP_CIPHER* cipher;
cipher = wolfSSL_EVP_des_cbc();
…

function wolfSSL_EVP_DigestInit_ex

int wolfSSL_EVP_DigestInit_ex(
    WOLFSSL_EVP_MD_CTX * ctx,
    const WOLFSSL_EVP_MD * type,
    WOLFSSL_ENGINE * impl
)

WOLFSSL_EVP_MD_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_DigestInit()のラッパーです。

Parameters:

  • ctx 初期化する構造体。
  • type 実行するハッシュのタイプ、例えばSHA。
  • impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。

See:

Return:

  • SSL_SUCCESS 正常に設定された場合。
  • SSL_FAILURE 成功しなかった場合。

Example

WOLFSSL_EVP_MD_CTX* md = NULL;
wolfCrypt_Init();
md = wolfSSL_EVP_MD_CTX_new();
if (md == NULL) {
    printf("error setting md\n");
    return -1;
}
printf("cipher md init ret = %d\n", wolfSSL_EVP_DigestInit_ex(md,
wolfSSL_EVP_sha1(), e));
//リソースを解放

function wolfSSL_EVP_CipherInit_ex

int wolfSSL_EVP_CipherInit_ex(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    const WOLFSSL_EVP_CIPHER * type,
    WOLFSSL_ENGINE * impl,
    const unsigned char * key,
    const unsigned char * iv,
    int enc
)

WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_CipherInit()のラッパーです。

Parameters:

  • ctx 初期化する構造体。
  • type 実行する暗号化/復号のタイプ、例えばAES。
  • impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。
  • key 設定する鍵。
  • iv アルゴリズムが必要とする場合のiv。
  • enc 暗号化(1)または復号(0)フラグ。

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

  • SSL_SUCCESS 正常に設定された場合。
  • SSL_FAILURE 成功しなかった場合。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
WOLFSSL_ENGINE* e = NULL;
unsigned char key[16];
unsigned char iv[12];
wolfCrypt_Init();
ctx = wolfSSL_EVP_CIPHER_CTX_new();
if (ctx == NULL) {
    printf("issue creating ctx\n");
    return -1;
}

printf("cipher init ex error ret = %d\n", wolfSSL_EVP_CipherInit_ex(NULL,
EVP_aes_128_    cbc(), e, key, iv, 1));
printf("cipher init ex success ret = %d\n", wolfSSL_EVP_CipherInit_ex(ctx,
EVP_aes_128_c    bc(), e, key, iv, 1));
// リソースを解放

function wolfSSL_EVP_EncryptInit_ex

int wolfSSL_EVP_EncryptInit_ex(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    const WOLFSSL_EVP_CIPHER * type,
    WOLFSSL_ENGINE * impl,
    const unsigned char * key,
    const unsigned char * iv
)

WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_CipherInit()のラッパーです。暗号化フラグを暗号化に設定します。

Parameters:

  • ctx 初期化する構造体。
  • type 実行する暗号化のタイプ、例えばAES。
  • impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。
  • key 使用する鍵。
  • iv 使用するiv。

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

  • SSL_SUCCESS 正常に設定された場合。
  • SSL_FAILURE 成功しなかった場合。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
wolfCrypt_Init();
ctx = wolfSSL_EVP_CIPHER_CTX_new();
if (ctx == NULL) {
    printf("error setting ctx\n");
    return -1;
}
printf("cipher ctx init ret = %d\n", wolfSSL_EVP_EncryptInit_ex(ctx,
wolfSSL_EVP_aes_128_cbc(), e, key, iv));
//リソースを解放

function wolfSSL_EVP_DecryptInit_ex

int wolfSSL_EVP_DecryptInit_ex(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    const WOLFSSL_EVP_CIPHER * type,
    WOLFSSL_ENGINE * impl,
    const unsigned char * key,
    const unsigned char * iv
)

WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_CipherInit()のラッパーです。暗号化フラグを復号に設定します。

Parameters:

  • ctx 初期化する構造体。
  • type 実行する暗号化/復号のタイプ、例えばAES。
  • impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。
  • key 設定する鍵。
  • iv アルゴリズムが必要とする場合のiv。
  • enc 暗号化(1)または復号(0)フラグ。

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

  • SSL_SUCCESS 正常に設定された場合。
  • SSL_FAILURE 成功しなかった場合。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
WOLFSSL_ENGINE* e = NULL;
unsigned char key[16];
unsigned char iv[12];

wolfCrypt_Init();

ctx = wolfSSL_EVP_CIPHER_CTX_new();
if (ctx == NULL) {
    printf("issue creating ctx\n");
    return -1;
}

printf("cipher init ex error ret = %d\n", wolfSSL_EVP_DecryptInit_ex(NULL,
EVP_aes_128_    cbc(), e, key, iv, 1));
printf("cipher init ex success ret = %d\n", wolfSSL_EVP_DecryptInit_ex(ctx,
EVP_aes_128_c    bc(), e, key, iv, 1));
// リソースを解放

function wolfSSL_EVP_CipherUpdate

int wolfSSL_EVP_CipherUpdate(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    unsigned char * out,
    int * outl,
    const unsigned char * in,
    int inl
)

データを暗号化/復号する関数。inバッファが暗号化または復号される対象として追加され、outバッファが結果を保持します。outlは暗号化/復号された情報の長さになります。

Parameters:

  • ctx 暗号タイプを取得する構造体。
  • out 出力を保持するバッファ。
  • outl 出力のサイズに調整されます。
  • in 操作を実行するバッファ。
  • inl 入力バッファの長さ。

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

  • SSL_SUCCESS 成功した場合。
  • SSL_FAILURE 成功しなかった場合。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
unsigned char out[100];
int outl;
unsigned char in[100];
int inl = 100;

ctx = wolfSSL_EVP_CIPHER_CTX_new();
// ctxをセットアップ
ret = wolfSSL_EVP_CipherUpdate(ctx, out, outl, in, inl);
// ret値をチェック
// バッファoutはoutlバイトのデータを保持
// リソースを解放

function wolfSSL_EVP_CipherFinal

int wolfSSL_EVP_CipherFinal(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    unsigned char * out,
    int * outl
)

この関数は、パディングを追加する最終暗号操作を実行します。WOLFSSL_EVP_CIPHER_CTX構造体にWOLFSSL_EVP_CIPH_NO_PADDINGフラグが設定されている場合、1が返され、暗号化/復号は実行されません。パディングフラグが設定されている場合、ctxが暗号化に設定されているときにパディングが追加され暗号化され、復号に設定されているときにパディング値がチェックされます。

Parameters:

  • ctx 復号/暗号化に使用する構造体。
  • out 最終復号/暗号化用のバッファ。
  • out1 関数によってデータが追加されたときのoutバッファのサイズ。

See: wolfSSL_EVP_CIPHER_CTX_new

Return:

  • 1 成功時に返されます。
  • 0 失敗が発生した場合。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx;
int out1;
unsigned char out[64];
// ctxを作成
wolfSSL_EVP_CipherFinal(ctx, out, &out1);

function wolfSSL_EVP_CIPHER_CTX_set_key_length

int wolfSSL_EVP_CIPHER_CTX_set_key_length(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    int keylen
)

WOLFSSL_EVP_CIPHER_CTX構造体の鍵長のセッター関数。

Parameters:

  • ctx 鍵長を設定する構造体。
  • keylen 鍵の長さ。

See: wolfSSL_EVP_CIPHER_flags

Return:

  • SSL_SUCCESS 正常に設定された場合。
  • SSL_FAILURE 鍵長の設定に失敗した場合。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx;
int keylen;
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_set_key_length(ctx, keylen);

function wolfSSL_EVP_CIPHER_CTX_block_size

int wolfSSL_EVP_CIPHER_CTX_block_size(
    const WOLFSSL_EVP_CIPHER_CTX * ctx
)

これはctxブロックサイズのゲッター関数です。

Parameters:

  • ctx ブロックサイズを取得する暗号ctx。

See: wolfSSL_EVP_CIPHER_block_size

Return: size ctx->block_sizeを返します。

Example

const WOLFSSL_CVP_CIPHER_CTX* ctx;
//ctxをセットアップ
printf("block size = %d\n", wolfSSL_EVP_CIPHER_CTX_block_size(ctx));

function wolfSSL_EVP_CIPHER_block_size

int wolfSSL_EVP_CIPHER_block_size(
    const WOLFSSL_EVP_CIPHER * cipher
)

これは暗号のブロックサイズのゲッター関数です。

Parameters:

  • cipher ブロックサイズを取得する暗号。

See: wolfSSL_EVP_aes_256_ctr

Return: size ブロックサイズを返します。

Example

printf("block size = %d\n",
wolfSSL_EVP_CIPHER_block_size(wolfSSL_EVP_aes_256_ecb()));

function wolfSSL_EVP_CIPHER_CTX_set_flags

void wolfSSL_EVP_CIPHER_CTX_set_flags(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    int flags
)

WOLFSSL_EVP_CIPHER_CTX構造体のセッター関数。

Parameters:

  • ctx フラグを設定する構造体。
  • flag 構造体に設定するフラグ。

See:

Return: none 戻り値なし。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx;
int flag;
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_set_flags(ctx, flag);

function wolfSSL_EVP_CIPHER_CTX_clear_flags

void wolfSSL_EVP_CIPHER_CTX_clear_flags(
    WOLFSSL_EVP_CIPHER_CTX * ctx,
    int flags
)

WOLFSSL_EVP_CIPHER_CTX構造体のクリア関数。

Parameters:

  • ctx フラグをクリアする構造体。
  • flag 構造体でクリアするフラグ値。

See:

Return: none 戻り値なし。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx;
int flag;
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_clear_flags(ctx, flag);

function wolfSSL_EVP_CIPHER_CTX_set_padding

int wolfSSL_EVP_CIPHER_CTX_set_padding(
    WOLFSSL_EVP_CIPHER_CTX * c,
    int pad
)

パディングを使用するためのWOLFSSL_EVP_CIPHER_CTX構造体のセッター関数。

Parameters:

  • ctx パディングフラグを設定する構造体。
  • padding パディングを設定しない場合は0、パディングを設定する場合は1。

See: wolfSSL_EVP_CIPHER_CTX_new

Return:

  • SSL_SUCCESS 正常に設定された場合。
  • BAD_FUNC_ARG null引数が渡された場合。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx;
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_set_padding(ctx, 1);

function wolfSSL_EVP_CIPHER_CTX_flags

unsigned long wolfSSL_EVP_CIPHER_CTX_flags(
    const WOLFSSL_EVP_CIPHER_CTX * ctx
)

WOLFSSL_EVP_CIPHER_CTX構造体のゲッター関数。v1.1.0で非推奨

Parameters:

  • ctx フラグを取得する構造体。

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfSSL_EVP_CIPHER_flags

Return: unsigned long フラグ/モードのunsigned long。

Example

WOLFSSL_EVP_CIPHER_CTX* ctx;
unsigned long flags;
ctx = wolfSSL_EVP_CIPHER_CTX_new()
flags = wolfSSL_EVP_CIPHER_CTX_flags(ctx);

function wolfSSL_PEM_write_bio_PrivateKey

int wolfSSL_PEM_write_bio_PrivateKey(
    WOLFSSL_BIO * bio,
    WOLFSSL_EVP_PKEY * key,
    const WOLFSSL_EVP_CIPHER * cipher,
    unsigned char * passwd,
    int len,
    wc_pem_password_cb * cb,
    void * arg
)

この関数は、WOLFSSL_BIO構造体にキーをPEM形式で書き込みます。

Parameters:

  • bio PEMバッファを取得するWOLFSSL_BIO構造体。
  • key PEM形式に変換するキー。
  • cipher EVP暗号構造体。
  • passwd パスワード。
  • len パスワードの長さ。
  • cb パスワードコールバック。
  • arg オプション引数。

See: wolfSSL_PEM_read_bio_X509_AUX

Return:

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

Example

WOLFSSL_BIO* bio;
WOLFSSL_EVP_PKEY* key;
int ret;
// bioを作成してキーをセットアップ
ret = wolfSSL_PEM_write_bio_PrivateKey(bio, key, NULL, NULL, 0, NULL, NULL);
//ret値を確認

function wolfSSL_CTX_use_RSAPrivateKey_file

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

この関数は、SSL接続で使用されるプライベートRSA鍵をSSLコンテキスト(WOLFSSL_CTX)に読み込みます。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされた場合(–enable-opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_CTX_use_PrivateKey_file()関数と同一です。file引数には、format引数で指定された形式のRSAプライベート鍵ファイルへのポインタが含まれます。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
  • file wolfSSL SSLコンテキストに読み込まれるRSAプライベート鍵を含むファイルの名前へのポインタ。形式はformat引数で指定されます。
  • format file引数で指定されたRSAプライベート鍵のエンコーディングタイプ。指定可能な値には、SSL_FILETYPE_PEMおよびSSL_FILETYPE_ASN1が含まれます。

See:

Return:

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

Example

int ret = 0;
WOLFSSL_CTX* ctx;
...
ret = wolfSSL_CTX_use_RSAPrivateKey_file(ctx, "./server-key.pem",
                                   SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // プライベート鍵ファイルの読み込みエラー
}
...

function wolfSSL_use_certificate_file

int wolfSSL_use_certificate_file(
    WOLFSSL * ssl,
    const char * file,
    int format
)

この関数は、証明書ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。証明書ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。

Parameters:

  • ssl wolfSSL_new()で作成されたWOLFSSL構造体へのポインタ。
  • file wolfSSL SSLセッションに読み込まれる証明書を含むファイルの名前へのポインタ。形式はformat引数で指定されます。
  • format file引数で指定された証明書のエンコーディングタイプ。指定可能な値には、SSL_FILETYPE_PEMおよびSSL_FILETYPE_ASN1が含まれます。

See:

Return:

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

Example

int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_certificate_file(ssl, "./client-cert.pem",
                             SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // 証明書ファイルの読み込みエラー
}
...

function wolfSSL_use_PrivateKey_file

int wolfSSL_use_PrivateKey_file(
    WOLFSSL * ssl,
    const char * file,
    int format
)

この関数は、プライベート鍵ファイルをSSLセッション(WOLFSSL構造体)に読み込みます。鍵ファイルはfile引数によって提供されます。format引数は、ファイルの形式タイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。

Parameters:

  • ssl wolfSSL_new()で作成されたWOLFSSL構造体へのポインタ。
  • file wolfSSL SSLセッションに読み込まれる鍵ファイルを含むファイルの名前へのポインタ。形式はformat引数で指定されます。
  • format file引数で指定された鍵のエンコーディングタイプ。指定可能な値には、SSL_FILETYPE_PEMおよびSSL_FILETYPE_ASN1が含まれます。

See:

Return:

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

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

Example

int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_PrivateKey_file(ssl, "./server-key.pem",
                            SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // 鍵ファイルの読み込みエラー
}
...

function wolfSSL_use_certificate_chain_file

int wolfSSL_use_certificate_chain_file(
    WOLFSSL * ssl,
    const char * file
)

この関数は、証明書のチェーンをSSLセッション(WOLFSSL構造体)にロードします。証明書チェーンを含むファイルはfile引数で指定され、PEM形式の証明書を含んでいる必要があります。この関数は、MAX_CHAIN_DEPTH(デフォルト = 9、internal.hで定義)個までの証明書と、サブジェクト証明書を処理します。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • file wolfSSL SSLセッションにロードする証明書のチェーンを含むファイルの名前へのポインタ。証明書はPEM形式でなければなりません。

See:

Return:

  • SSL_SUCCESS 成功時。
  • SSL_FAILURE 関数呼び出しが失敗した場合、考えられる原因は次のとおりです:ファイルの形式が間違っている、または"format"引数で与えられた形式が間違っている、ファイルが存在しない、読み取れない、または破損している、メモリ不足の状態が発生した

Example

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

function wolfSSL_use_RSAPrivateKey_file

int wolfSSL_use_RSAPrivateKey_file(
    WOLFSSL * ssl,
    const char * file,
    int format
)

この関数は、SSL接続で使用されるプライベートRSA鍵をSSLセッション(WOLFSSL構造体)にロードします。この関数は、wolfSSLがOpenSSL互換レイヤーを有効にしてコンパイルされている場合(–enable-opensslExtra、#define OPENSSL_EXTRA)にのみ利用可能であり、より一般的に使用されるwolfSSL_use_PrivateKey_file()関数と同一です。file引数は、formatで指定された形式のRSAプライベート鍵ファイルへのポインタを含みます。

Parameters:

  • ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
  • file wolfSSL SSLセッションにロードするRSAプライベート鍵を含むファイルの名前へのポインタ、形式はformatで指定されます。
  • format fileで指定されたRSAプライベート鍵のエンコーディングタイプ。指定可能な値はSSL_FILETYPE_PEMとSSL_FILETYPE_ASN1です。

See:

Return:

  • SSL_SUCCESS 成功時
  • SSL_FAILURE 関数呼び出しが失敗した場合、考えられる原因は次のとおりです:入力鍵ファイルの形式が間違っている、または"format"引数で与えられた形式が間違っている、ファイルが存在しない、読み取れない、または破損している、メモリ不足の状態が発生した

Example

int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_RSAPrivateKey_file(ssl, "./server-key.pem",
                               SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // プライベート鍵ファイルのロードエラー
}
...

function wolfSSL_set_tlsext_status_type

long wolfSSL_set_tlsext_status_type(
    WOLFSSL * s,
    int type
)

この関数は、クライアントアプリケーションがサーバにOCSPステータスレスポンス(OCSPステープリングとも呼ばれます)を返送するよう要求する際に呼び出されます。現在、サポートされている唯一のタイプはTLSEXT_STATUSTYPE_ocspです。

Parameters:

  • s SSL_new()関数によって作成されたWOLFSSL構造体へのポインタ。
  • type TLSEXT_STATUSTYPE_ocspのみがサポートされているSSL拡張タイプ。

See:

Return:

  • 1 成功時。
  • 0 エラー時。

Example

WOLFSSL *ssl;
WOLFSSL_CTX *ctx;
int ret;
ctx = wolfSSL_CTX_new(wolfSSLv23_server_method());
ssl = wolfSSL_new(ctx);
ret = WolfSSL_set_tlsext_status_type(ssl,TLSEXT_STATUSTYPE_ocsp);
wolfSSL_free(ssl);
wolfSSL_CTX_free(ctx);

function wolfSSL_get_peer_chain

WOLFSSL_X509_CHAIN * wolfSSL_get_peer_chain(
    WOLFSSL * ssl
)

ピアの証明書チェーンを取得します。

Parameters:

  • ssl 有効なWOLFSSL構造体へのポインタ。

See:

Return:

  • chain 成功した場合、呼び出しはピアの証明書チェーンを返します。
  • 0 無効なWOLFSSLポインタが関数に渡された場合に返されます。

Example

none

function wolfSSL_get_chain_count

int wolfSSL_get_chain_count(
    WOLFSSL_X509_CHAIN * chain
)

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

Parameters:

  • chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。

See:

Return:

  • Success 成功した場合、呼び出しはピアの証明書チェーン数を返します。
  • 0 無効なchainポインタが関数に渡された場合に返されます。

Example

none

function wolfSSL_get_chain_length

int wolfSSL_get_chain_length(
    WOLFSSL_X509_CHAIN * chain,
    int idx
)

インデックス(idx)におけるピアのASN1.DER証明書の長さをバイト単位で取得します。

Parameters:

  • chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。
  • idx チェーンの開始インデックス。

See:

Return:

  • Success 成功した場合、呼び出しはインデックスによるピアの証明書の長さをバイト単位で返します。
  • 0 無効なchainポインタが関数に渡された場合に返されます。

Example

none

function wolfSSL_get_chain_cert

unsigned char * wolfSSL_get_chain_cert(
    WOLFSSL_X509_CHAIN * chain,
    int idx
)

インデックス(idx)におけるピアのASN1.DER証明書を取得します。

Parameters:

  • chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。
  • idx チェーンの開始インデックス。

See:

Return:

  • Success 成功した場合、呼び出しはインデックスによるピアの証明書を返します。
  • 0 無効なchainポインタが関数に渡された場合に返されます。

Example

none

function wolfSSL_get_chain_cert_pem

int wolfSSL_get_chain_cert_pem(
    WOLFSSL_X509_CHAIN * chain,
    int idx,
    unsigned char * buf,
    int inLen,
    int * outLen
)

インデックス(idx)におけるピアのPEM証明書を取得します。

Parameters:

  • chain 有効なWOLFSSL_X509_CHAIN構造体へのポインタ。
  • idx チェーンの開始インデックス。

See:

Return:

  • Success 成功した場合、呼び出しはインデックスによるピアの証明書を返します。
  • 0 無効なchainポインタが関数に渡された場合に返されます。

Example

none

function wolfSSL_get_sessionID

const unsigned char * wolfSSL_get_sessionID(
    const WOLFSSL_SESSION * s
)

セッションIDを取得します。セッションIDは常に32バイト長です。

Parameters:

  • session 有効なwolfsslセッションへのポインタ。

See: SSL_get_session

Return: id セッションID。

Example

none

function wolfSSL_X509_get_serial_number

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

ピアの証明書シリアル番号を取得します。シリアル番号バッファ(in)は少なくとも32バイト長であり、入力としてinOutSz引数として提供される必要があります。関数を呼び出した後、inOutSzにはinバッファに書き込まれた実際の長さ(バイト単位)が保持されます。

Parameters:

  • in シリアル番号バッファで、少なくとも32バイト長である必要があります。
  • inOutSz inバッファに書き込まれた実際の長さ(バイト単位)を保持します。

See: SSL_get_peer_certificate

Return:

  • SSL_SUCCESS 成功時。
  • BAD_FUNC_ARG 不正な関数引数が検出された場合に返されます。

Example

none

function wolfSSL_d2i_PKCS12_bio

WC_PKCS12 * wolfSSL_d2i_PKCS12_bio(
    WOLFSSL_BIO * bio,
    WC_PKCS12 ** pkcs12
)

wolfSSL_d2i_PKCS12_bio(d2i_PKCS12_bio)は、WOLFSSL_BIOからWC_PKCS12構造体へPKCS12情報をコピーします。情報は、構造体内でコンテンツ情報のリストとして分割され、オプションのMAC情報を保持する構造体も含まれます。情報がWC_PKCS12構造体内でチャンク(ただし復号されていない)に分割された後、呼び出すことによって解析および復号できます。

Parameters:

  • bio PKCS12バッファを読み取るWOLFSSL_BIO構造体。
  • pkcs12 作成された新しいPKCS12構造体用のWC_PKCS12構造体ポインタ。NULLでも可。

See:

Return:

  • WC_PKCS12 WC_PKCS12構造体へのポインタ。
  • Failure 関数が失敗した場合、NULLを返します。

Example

WC_PKCS12* pkcs;
WOLFSSL_BIO* bio;
WOLFSSL_X509* cert;
WOLFSSL_EVP_PKEY* pkey;
STACK_OF(X509) certs;
//bioはPKCS12ファイルを読み込みます。
wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
wolfSSL_PKCS12_parse(pkcs, "a password", &pkey, &cert, &certs)
wc_PKCS12_free(pkcs)
//cert、pkey、およびオプションでcertsスタックを使用します。

function wolfSSL_i2d_PKCS12_bio

WC_PKCS12 * wolfSSL_i2d_PKCS12_bio(
    WOLFSSL_BIO * bio,
    WC_PKCS12 * pkcs12
)

wolfSSL_i2d_PKCS12_bio(i2d_PKCS12_bio)は、WC_PKCS12構造体からWOLFSSL_BIOへ証明書情報をコピーします。

Parameters:

  • bio PKCS12バッファを書き込むWOLFSSL_BIO構造体。
  • pkcs12 入力としてのPKCS12構造体用のWC_PKCS12構造体。

See:

Return:

  • 1 成功時。
  • Failure 0。

Example

WC_PKCS12 pkcs12;
FILE *f;
byte buffer[5300];
char file[] = "./test.p12";
int bytes;
WOLFSSL_BIO* bio;
pkcs12 = wc_PKCS12_new();
f = fopen(file, "rb");
bytes = (int)fread(buffer, 1, sizeof(buffer), f);
fclose(f);
//DERファイルを内部構造に変換します。
wc_d2i_PKCS12(buffer, bytes, pkcs12);
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
//PKCS12構造体をbioに変換します。
wolfSSL_i2d_PKCS12_bio(bio, pkcs12);
wc_PKCS12_free(pkcs)
//bioを使用します。

function wolfSSL_PKCS12_parse

int wolfSSL_PKCS12_parse(
    WC_PKCS12 * pkcs12,
    const char * psw,
    WOLFSSL_EVP_PKEY ** pkey,
    WOLFSSL_X509 ** cert,
    WOLF_STACK_OF(WOLFSSL_X509) ** ca
)

PKCS12は、configureコマンドに–enable-opensslextraを追加することで有効にできます。復号にトリプルDESとRC4を使用できるため、opensslextraを有効にする際にこれらの機能も有効にすることを推奨します(–enable-des3 –enable-arc4)。wolfSSLは現在RC2をサポートしていないため、RC2での復号は現在利用できません。これは、OpenSSLコマンドラインで.p12ファイルを作成する際に使用されるデフォルトの暗号化スキームで顕著になる可能性があります。wolfSSL_PKCS12_parse(PKCS12_parse)。この関数が最初に行うことは、存在する場合にMACが正しいかどうかを確認することです。MACが失敗した場合、関数は返され、保存されているコンテンツ情報の復号を試みません。この関数は、各コンテンツ情報を解析してバッグタイプを探し、バッグタイプが既知の場合、必要に応じて復号され、構築中の証明書リストまたは見つかった鍵として保存されます。すべてのバッグを解析した後、見つかった鍵は証明書リストと比較され、一致するペアが見つかります。この一致するペアは、鍵と証明書として返されます。オプションで、見つかった証明書リストはSTACK_OFの証明書として返されます。現時点では、CRL、Secret、またはSafeContentsバッグはスキップされ、解析されません。これらまたは他の「不明な」バッグがスキップされているかどうかは、デバッグ出力を表示することで確認できます。フレンドリ名などの追加属性は、PKCS12ファイルを解析する際にスキップされます。

Parameters:

  • pkcs12 解析するWC_PKCS12構造体。
  • paswd PKCS12を復号するためのパスワード。
  • pkey PKCS12から復号された秘密鍵を保持する構造体。
  • cert PKCS12から復号された証明書を保持する構造体。
  • stack 追加の証明書のオプションスタック。

See:

Return:

  • SSL_SUCCESS PKCS12の解析が成功した場合。
  • SSL_FAILURE エラーケースに遭遇した場合。

Example

WC_PKCS12* pkcs;
WOLFSSL_BIO* bio;
WOLFSSL_X509* cert;
WOLFSSL_EVP_PKEY* pkey;
STACK_OF(X509) certs;
//bioはPKCS12ファイルを読み込みます。
wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
wolfSSL_PKCS12_parse(pkcs, "a password", &pkey, &cert, &certs)
wc_PKCS12_free(pkcs)
//cert、pkey、およびオプションでcertsスタックを使用します。

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