コンテンツにスキップ

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()を1回呼び出す必要があります。wolfssl_des_ecbマクロは、wolfssl_evp_des_ede3_ecb()に対して定義する必要があります。
const WOLFSSL_EVP_CIPHER * wolfSSL_EVP_des_cbc(void )
それぞれのwolfssl_evp_cipherポインタのゲッター関数。最初にプログラム内でwolfssl_evp_init()を1回呼び出す必要があります。wolfssl_des_ecbマクロは、wolfssl_evp_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_engineが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_engineがwolfssl_engineを使用しないため、wolfssl_ciphinit()のラッパーです。
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_ciphinit()のラッパーです。暗号化フラグを暗号化するように設定します。
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_ciphinit()のラッパーです。暗号化フラグを復号化するように設定します。
int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl, const unsigned char * in, int inl)
データを暗号化/復号化する機能。バッファ内では暗号化または復号化され、OUTバッファが結果を保持します。OUTORは暗号化/復号化された情報の長さになります。
int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX * ctx, unsigned char * out, int * outl)
この関数は、パディングを追加する最終暗号化操作を実行します。wolfssl_evp_ciph_no_paddingフラグがwolfssl_evp_cipher_ctx構造に設定されている場合、1が返され、暗号化/復号化は行われません。PADDING FLAGがSETIパディングを追加して暗号化すると、暗号化に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ブロックサイズのGetter関数です。
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)
この関数は、PEM形式のwolfssl_bio構造体にキーを書き込みます。
int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX * ctx, const char * file, int format)
この関数は、SSL接続で使用されているRSA秘密鍵をSSLコンテキスト(WOLFSSL_CTX)にロードします。 この関数は、wolfSSLがOpenSSL互換APIが有効(–enable_openSSLExtra、#define OPENSSL_EXTRA)でコンパイルされている場合にのみ利用可能で、 より一般的に使用されているwolfSSL_CTX_use_PrivateKey_file()関数と同じです。 ファイル引数には、RSA秘密鍵ファイルへのポインタが、引数formatで指定された形式で含まれています。
int wolfSSL_use_certificate_file(WOLFSSL * ssl, const char * file, int format)
この関数は証明書ファイルをSSLセッション(WOLFSSL構造体)にロードします。 証明書ファイルはファイル引数によって提供されます。 引数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が指定可)を指定します。 外部キーストアを使用し、秘密鍵を持っていない場合は、代わりに公開鍵を入力してCryProコールバックを登録して署名を処理することができます。 このためには、CryptoコールバックまたはPKコールバックを使用したコンフィグレーションでビルドします。 Cryptoコールバックを有効にするには、–enable-cryptocbまたはWOLF_CRYPTO_CBマクロを使用してビルドし、 wc_CryptoCb_RegisterDeviceを使用して暗号コールバックを登録し、 wolfSSL_SetDevIdを使用して関連するdevIdを設定します。
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互換APIを有効(–enable_openSSlExtra、#define OPENSSL_EXTRA)でビルドされている場合にのみ利用可能で、 より一般的に使用されるwolfSSL_use_PrivateKey_file()関数と同じです。 引数fileには、RSA秘密鍵ファイルへのポインタが、フォーマットで指定された形式で含まれています。
long wolfSSL_set_tlsext_status_type(WOLFSSL * s, int type)
この関数は、サーバがOCSPステータス応答(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)
Index(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-openSSLAXTRAを追加することで有効にできます。それは復号化のためにトリプルDESとRC4を使うことができるので、OpenSSlextra(–enable-des3 -enable-arc4)を有効にするときにもこれらの機能を有効にすることをお勧めします。 wolfsslは現在RC2をサポートしていませんので、RC2での復号化は現在利用できません。これは、.p12ファイルを作成するためにOpenSSLコマンドラインで使用されるデフォルトの暗号化方式では注目すかもしれません。 WOLFSSL_PKCS12_PARSE(PKCS12_PARSE)。この関数が最初に行っているのは、存在する場合はMacが正しいチェックです。 MACが失敗した場合、関数は返され、保存されているコンテンツ情報のいずれかを復号化しようとしません。この関数は、バッグタイプを探している各コンテンツ情報を介して解析します。バッグタイプがわかっている場合は、必要に応じて復号化され、構築されている証明書のリストに格納されているか、見つかったキーとして保存されます。すべてのバッグを介して解析した後、見つかったキーは、一致するペアが見つかるまで証明書リストと比較されます。この一致するペアはキーと証明書として返され、オプションで見つかった証明書リストはstack_of証明書として返されます。瞬間、CRL、秘密または安全なバッグがスキップされ、解析されません。デバッグプリントアウトを見ることで、これらまたは他の「不明」バッグがスキップされているかどうかがわかります。フレンドリー名などの追加の属性は、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 によって上げる力。
  • m 使用率 Example
WOLFSSL_BIGNUM r,a,p,m;
int ret;
// set big number values
ret  = wolfSSL_BN_mod_exp(r, a, p, m, NULL);
// check ret value

See:

  • wolfSSL_BN_new
  • wolfSSL_BN_free

Return:

  • SSL_SUCCESS 数学操作をうまく実行します。
  • SSL_FAILURE エラーケースに遭遇した場合

function wolfSSL_EVP_des_ede3_ecb

const WOLFSSL_EVP_CIPHER * wolfSSL_EVP_des_ede3_ecb(
    void 
)

それぞれのwolfssl_evp_cipherポインタのゲッター関数。最初にプログラム内でwolfssl_evp_init()を1回呼び出す必要があります。wolfssl_des_ecbマクロは、wolfssl_evp_des_ede3_ecb()に対して定義する必要があります。

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()を1回呼び出す必要があります。wolfssl_des_ecbマクロは、wolfssl_evp_des_ecb()に対して定義する必要があります。

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_engineがwolfssl_engineを使用しないため、wolfssl_evp_digestinit()のラッパーです。

Parameters:

  • ctx 初期化する構造
  • type SHAなどのハッシュの種類。 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));
//free resources

See:

Return:

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

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_engineがwolfssl_engineを使用しないため、wolfssl_ciphinit()のラッパーです。

Parameters:

  • ctx 初期化する構造
  • type AESなどの暗号化/復号化の種類。
  • impl 使用するエンジン。wolfsslのn / aは、nullになることができます。
  • key 設定するキー
  • iv アルゴリズムで必要な場合はIV。 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));
// free resources

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

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

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_ciphinit()のラッパーです。暗号化フラグを暗号化するように設定します。

Parameters:

  • ctx 初期化する構造
  • type AESなどの暗号化の種類。
  • impl 使用するエンジン。wolfsslのn / aは、nullになることができます。
  • key 使用する鍵 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));
//free resources

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

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

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_ciphinit()のラッパーです。暗号化フラグを復号化するように設定します。

Parameters:

  • ctx 初期化する構造
  • type AESなどの暗号化/復号化の種類。
  • impl 使用するエンジン。wolfsslのn / aは、nullになることができます。
  • key 設定するキー
  • iv アルゴリズムで必要な場合はIV。 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));
// free resources

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

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

function wolfSSL_EVP_CipherUpdate

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

データを暗号化/復号化する機能。バッファ内では暗号化または復号化され、OUTバッファが結果を保持します。OUTORは暗号化/復号化された情報の長さになります。

Parameters:

  • ctx から暗号化の種類を取得するための構造。
  • out 出力を保持するためのバッファ。
  • outl 出力のサイズになるように調整しました。
  • in 操作を実行するためのバッファー。 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();
// set up ctx
ret = wolfSSL_EVP_CipherUpdate(ctx, out, outl, in, inl);
// check ret value
// buffer out holds outl bytes of data
// free resources

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfCrypt_Init
  • wolfSSL_EVP_CIPHER_CTX_free

Return:

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

function wolfSSL_EVP_CipherFinal

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

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

Parameters:

  • ctx 復号化/暗号化する構造。
  • out 最後の復号化/暗号化のためのバッファ。 Example
WOLFSSL_EVP_CIPHER_CTX* ctx;
int out1;
unsigned char out[64];
// create ctx
wolfSSL_EVP_CipherFinal(ctx, out, &out1);

See: wolfSSL_EVP_CIPHER_CTX_new

Return:

  • 1 成功に戻りました。
  • 0 失敗に遭遇した場合

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 キーの長さを設定する構造 Example
WOLFSSL_EVP_CIPHER_CTX* ctx;
int keylen;
// create ctx
wolfSSL_EVP_CIPHER_CTX_set_key_length(ctx, keylen);

See: wolfSSL_EVP_CIPHER_flags

Return:

  • SSL_SUCCESS 正常に設定されている場合。
  • SSL_FAILURE キーの長さを設定できなかった場合。

function wolfSSL_EVP_CIPHER_CTX_block_size

int wolfSSL_EVP_CIPHER_CTX_block_size(
    const WOLFSSL_EVP_CIPHER_CTX * ctx
)

これはCTXブロックサイズのGetter関数です。

See: wolfSSL_EVP_CIPHER_block_size

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

const WOLFSSL_CVP_CIPHER_CTX* ctx;
//set up 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
)

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

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 フラグを設定する構造 Example
WOLFSSL_EVP_CIPHER_CTX* ctx;
int flag;
// create ctx
wolfSSL_EVP_CIPHER_CTX_set_flags(ctx, flag);

See:

Return: none いいえ返します。

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 フラグをクリアするための構造 Example
WOLFSSL_EVP_CIPHER_CTX* ctx;
int flag;
// create ctx
wolfSSL_EVP_CIPHER_CTX_clear_flags(ctx, flag);

See:

Return: none いいえ返します。

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 パディングフラグを設定する構造 Example
WOLFSSL_EVP_CIPHER_CTX* ctx;
// create ctx
wolfSSL_EVP_CIPHER_CTX_set_padding(ctx, 1);

See: wolfSSL_EVP_CIPHER_CTX_new

Return:

  • SSL_SUCCESS 正常に設定されている場合。
  • BAD_FUNC_ARG NULL引数が渡された場合。

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

See:

  • wolfSSL_EVP_CIPHER_CTX_new
  • wolfSSL_EVP_CIPHER_flags

Return: unsigned フラグ/モードの長い。 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
)

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

Parameters:

  • bio wolfssl_bio構造体からPEMバッファを取得します。
  • key PEM形式に変換するためのキー。
  • cipher EVP暗号構造
  • passwd パスワード。
  • len パスワードの長さ
  • cb パスワードコールバック Example
WOLFSSL_BIO* bio;
WOLFSSL_EVP_PKEY* key;
int ret;
// create bio and setup key
ret = wolfSSL_PEM_write_bio_PrivateKey(bio, key, NULL, NULL, 0, NULL, NULL);
//check ret value

See: wolfSSL_PEM_read_bio_X509_AUX

Return:

  • SSL_SUCCESS 成功すると。
  • SSL_FAILURE 失敗すると。

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互換APIが有効(–enable-openSSLExtra、#define OPENSSL_EXTRA)でコンパイルされている場合にのみ利用可能で、 より一般的に使用されているwolfSSL_CTX_use_PrivateKey_file()関数と同じです。 ファイル引数には、RSA秘密鍵ファイルへのポインタが、引数formatで指定された形式で含まれています。

Parameters:

  • ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ
  • file フォーマットで指定された形式で、WolfSSL SSLコンテキストにロードされるRSA秘密鍵を含むファイルの名前へのポインタ。
  • format 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) {
    // error loading private key file
}
...

function wolfSSL_use_certificate_file

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

この関数は証明書ファイルをSSLセッション(WOLFSSL構造体)にロードします。 証明書ファイルはファイル引数によって提供されます。 引数formatは、ファイルのフォーマットタイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。

Parameters:

  • ssl wolfSSL_new()で作成されたWOLFSSL構造体へのポインタ。
  • file WOLFSSL構造体にロードされる証明書を含むファイルの名前へのポインタ
  • format 証明書ファイルのエンコード形式を指定します。指定可能なフォーマット値は: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) {
    // error loading cert file
}
...

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が指定可)を指定します。 外部キーストアを使用し、秘密鍵を持っていない場合は、代わりに公開鍵を入力してCryProコールバックを登録して署名を処理することができます。 このためには、CryptoコールバックまたはPKコールバックを使用したコンフィグレーションでビルドします。 Cryptoコールバックを有効にするには、–enable-cryptocbまたはWOLF_CRYPTO_CBマクロを使用してビルドし、 wc_CryptoCb_RegisterDeviceを使用して暗号コールバックを登録し、 wolfSSL_SetDevIdを使用して関連するdevIdを設定します。

Parameters:

  • ssl wolfSSL_new()で作成されたWOLFSSL構造体へのポインタ。
  • file WOLFSSL構造体にロードされる証明書を含むファイルの名前へのポインタ
  • format 秘密鍵ファイルのエンコード形式を指定します。指定可能なフォーマット値は:SSL_FILETYPE_PEM と SSL_FILETYPE_ASN1

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • SSL_FAILURE 関数呼び出しが失敗した場合に返されます。 可能な原因には次のようなものがあります。 ファイルが誤った形式、または引数formatを使用して誤った形式が与えられた、 メモリ不足状態が発生した、ファイルでBase16のデコードが失敗した

Example

int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_PrivateKey_file(ssl, “./server-key.pem”,
                            SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // error loading key file
}
...

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構造体にロードされる証明書を含むファイルの名前へのポインタ。 証明書はPEM形式でなければなりません。

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • SSL_FAILURE 関数呼び出しが失敗した場合に返されます。 可能な原因には次のようなものがあります: ファイルが誤った形式、または引数formatを使用して誤った形式が与えられた、 メモリ不足状態が発生した、ファイルでbase16のデコードが失敗した

Example

int ret = 0;
WOLFSSL* ctx;
...
ret = wolfSSL_use_certificate_chain_file(ssl, “./cert-chain.pem”);
if (ret != SSL_SUCCESS) {
    // error loading cert file
}
...

function wolfSSL_use_RSAPrivateKey_file

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

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

Parameters:

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

See:

Return:

  • SSL_SUCCESS 成功時に返されます。
  • SSL_FAILURE 関数呼び出しが失敗した場合に返されます。 可能な原因には次のようなものがあります: ファイルが誤った形式、または引数formatを使用して誤った形式が与えられた、 メモリ不足状態が発生した、ファイルでBase16のデコードが失敗した

Example

int ret = 0;
WOLFSSL* ssl;
...
ret = wolfSSL_use_RSAPrivateKey_file(ssl, “./server-key.pem”,
                               SSL_FILETYPE_PEM);
if (ret != SSL_SUCCESS) {
    // error loading private key file
}
...

function wolfSSL_set_tlsext_status_type

long wolfSSL_set_tlsext_status_type(
    WOLFSSL * s,
    int type
)

この関数は、サーバがOCSPステータス応答(OCSPステイプルとも呼ばれる)を送受信するクライアントアプリケーションが要求されたときに呼び出されます。

Parameters:

  • s ssl_new()関数によって作成されたWOLFSSL構造体へのポインタ
  • type ssl拡張タイプ。TLSEXT_STATUSTYPE_ocspのみ指定可。

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
)

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

See:

Return:

  • chain 正常にコールがピアの証明書チェーンを返します。
  • 0 無効なWolfSSLポインタが関数に渡されると返されます。

Example

none

function wolfSSL_get_chain_count

int wolfSSL_get_chain_count(
    WOLFSSL_X509_CHAIN * chain
)

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

See:

Return:

  • Success 正常にコールがピアの証明書チェーン数を返します。
  • 0 無効なチェーンポインタが関数に渡されると返されます。

Example

none

function wolfSSL_get_chain_length

int wolfSSL_get_chain_length(
    WOLFSSL_X509_CHAIN * chain,
    int idx
)

Index(IDX)のピアのASN1.DER証明書長をバイト単位で取得します。

Parameters:

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

See:

Return:

  • Success 正常にコールがインデックス別にピアの証明書長をバイト単位で返します。
  • 0 無効なチェーンポインタが関数に渡されると返されます。

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構造へのポインタ。

See:

Return:

  • Success 正常にコールがインデックスでピアの証明書を返します。
  • 0 無効なチェーンポインタが関数に渡されると返されます。

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構造へのポインタ。

See:

Return:

  • Success 正常にコールがインデックスでピアの証明書を返します。
  • 0 無効なチェーンポインタが関数に渡されると返されます。

Example

none

function wolfSSL_get_sessionID

const unsigned char * wolfSSL_get_sessionID(
    const WOLFSSL_SESSION * s
)

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

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バイトの長さであるべきです

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構造。

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 loads in PKCS12 file
wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
wolfSSL_PKCS12_parse(pkcs, “a password”, &pkey, &cert, &certs)
wc_PKCS12_free(pkcs)
//use cert, pkey, and optionally certs stack

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構造。

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);
//convert the DER file into an internal structure
wc_d2i_PKCS12(buffer, bytes, pkcs12);
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
//convert PKCS12 structure into bio
wolfSSL_i2d_PKCS12_bio(bio, pkcs12);
wc_PKCS12_free(pkcs)
//use 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-openSSLAXTRAを追加することで有効にできます。それは復号化のためにトリプルDESとRC4を使うことができるので、OpenSSlextra(–enable-des3 -enable-arc4)を有効にするときにもこれらの機能を有効にすることをお勧めします。 wolfsslは現在RC2をサポートしていませんので、RC2での復号化は現在利用できません。これは、.p12ファイルを作成するためにOpenSSLコマンドラインで使用されるデフォルトの暗号化方式では注目すかもしれません。 WOLFSSL_PKCS12_PARSE(PKCS12_PARSE)。この関数が最初に行っているのは、存在する場合はMacが正しいチェックです。 MACが失敗した場合、関数は返され、保存されているコンテンツ情報のいずれかを復号化しようとしません。この関数は、バッグタイプを探している各コンテンツ情報を介して解析します。バッグタイプがわかっている場合は、必要に応じて復号化され、構築されている証明書のリストに格納されているか、見つかったキーとして保存されます。すべてのバッグを介して解析した後、見つかったキーは、一致するペアが見つかるまで証明書リストと比較されます。この一致するペアはキーと証明書として返され、オプションで見つかった証明書リストはstack_of証明書として返されます。瞬間、CRL、秘密または安全なバッグがスキップされ、解析されません。デバッグプリントアウトを見ることで、これらまたは他の「不明」バッグがスキップされているかどうかがわかります。フレンドリー名などの追加の属性は、PKCS12ファイルを解析するときにスキップされます。

Parameters:

  • pkcs12 wc_pkcs12解析する構造
  • paswd PKCS12を復号化するためのパスワード。
  • pkey PKCS12からデコードされた秘密鍵を保持するための構造。
  • cert PKCS12から復号された証明書を保持する構造

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 loads in PKCS12 file
wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
wolfSSL_PKCS12_parse(pkcs, “a password”, &pkey, &cert, &certs)
wc_PKCS12_free(pkcs)
//use cert, pkey, and optionally certs stack

Updated on 2024-02-29 at 02:35:59 +0000