コンテンツにスキップ

Algorithms - Diffie-Hellman

Functions

Name
int wc_InitDhKey(DhKey * key)
この関数は、Diffie-Hellman Exchangeプロトコルを使用して安全な秘密鍵を交渉するのに使用するためのDiffie-Hellmanキーを初期化します。
void wc_FreeDhKey(DhKey * key)
この関数は、Diffie-Hellman Exchangeプロトコルを使用して安全な秘密鍵をネゴシエートするために使用された後にDiffie-Hellmanキーを解放します。
int wc_DhGenerateKeyPair(DhKey * key, WC_RNG * rng, byte * priv, word32 * privSz, byte * pub, word32 * pubSz)
この関数はdiffie-hellmanパブリックパラメータに基づいてパブリック/秘密鍵ペアを生成し、PRIVSの秘密鍵とPubの公開鍵を格納します。初期化されたDiffie-Hellmanキーと初期化されたRNG構造を取ります。
int wc_DhAgree(DhKey * key, byte * agree, word32 * agreeSz, const byte * priv, word32 privSz, const byte * otherPub, word32 pubSz)
この関数は、ローカル秘密鍵と受信した公開鍵に基づいて合意された秘密鍵を生成します。交換の両側で完了した場合、この関数は対称通信のための秘密鍵の合意を生成します。共有秘密鍵の生成に成功すると、書かれた秘密鍵のサイズは仲間に保存されます。
int wc_DhKeyDecode(const byte * input, word32 * inOutIdx, DhKey * key, word32 )
この機能は、DERフォーマットのキーを含む与えられた入力バッファからDiffie-Hellmanキーをデコードします。結果をDHKEY構造体に格納します。
int wc_DhSetKey(DhKey * key, const byte * p, word32 pSz, const byte * g, word32 gSz)
この関数は、入力秘密鍵パラメータを使用してDHKEY構造体のキーを設定します。WC_DHKEYDECODEとは異なり、この関数は入力キーがDERフォーマットでフォーマットされ、代わりにPARSED入力パラメータP(Prime)とG(Base)を受け入れる必要はありません。
int wc_DhParamsLoad(const byte * input, word32 inSz, byte * p, word32 * pInOutSz, byte * g, word32 * gInOutSz)
この関数は、与えられた入力バッファからDiffie-HellmanパラメータP(Prime)とG(ベース)をフォーマットされています。
const DhParams * wc_Dh_ffdhe2048_Get(void )
const DhParams * wc_Dh_ffdhe3072_Get(void )
const DhParams * wc_Dh_ffdhe4096_Get(void )
const DhParams * wc_Dh_ffdhe6144_Get(void )
const DhParams * wc_Dh_ffdhe8192_Get(void )
int wc_DhCheckKeyPair(DhKey * key, const byte * pub, word32 pubSz, const byte * priv, word32 privSz)
int wc_DhCheckPrivKey(DhKey * key, const byte * priv, word32 pubSz)

Functions Documentation

function wc_InitDhKey

int wc_InitDhKey(
    DhKey * key
)

この関数は、Diffie-Hellman Exchangeプロトコルを使用して安全な秘密鍵を交渉するのに使用するためのDiffie-Hellmanキーを初期化します。

See:

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

DhKey key;
wc_InitDhKey(&key); // initialize DH key

function wc_FreeDhKey

void wc_FreeDhKey(
    DhKey * key
)

この関数は、Diffie-Hellman Exchangeプロトコルを使用して安全な秘密鍵をネゴシエートするために使用された後にDiffie-Hellmanキーを解放します。

See: wc_InitDhKey

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

DhKey key;
// initialize key, perform key exchange

wc_FreeDhKey(&key); // free DH key to avoid memory leaks

function wc_DhGenerateKeyPair

int wc_DhGenerateKeyPair(
    DhKey * key,
    WC_RNG * rng,
    byte * priv,
    word32 * privSz,
    byte * pub,
    word32 * pubSz
)

この関数はdiffie-hellmanパブリックパラメータに基づいてパブリック/秘密鍵ペアを生成し、PRIVSの秘密鍵とPubの公開鍵を格納します。初期化されたDiffie-Hellmanキーと初期化されたRNG構造を取ります。

Parameters:

  • key キーペアを生成するDHKEY構造体へのポインタ
  • rng キーを生成するための初期化された乱数発生器(RNG)へのポインタ
  • priv 秘密鍵を保存するバッファへのポインタ
  • privSz PRIVに書かれた秘密鍵のサイズを保存します
  • pub 公開鍵を保存するバッファへのポインタ Example
DhKey key;
int ret;
byte priv[256];
byte pub[256];
word32 privSz, pubSz;

wc_InitDhKey(&key); // initialize key
// Set DH parameters using wc_DhSetKey or wc_DhKeyDecode
WC_RNG rng;
wc_InitRng(&rng); // initialize rng
ret = wc_DhGenerateKeyPair(&key, &rng, priv, &privSz, pub, &pubSz);

See:

Return:

  • BAD_FUNC_ARG この関数への入力の1つを解析するエラーがある場合に返されます
  • RNG_FAILURE_E RNGを使用して乱数を生成するエラーが発生した場合
  • MP_INIT_E 公開鍵の生成中に数学ライブラリにエラーがある場合は返却される可能性があります
  • MP_READ_E 公開鍵の生成中に数学ライブラリにエラーがある場合は返却される可能性があります
  • MP_EXPTMOD_E 公開鍵の生成中に数学ライブラリにエラーがある場合は返却される可能性があります
  • MP_TO_E 公開鍵の生成中に数学ライブラリにエラーがある場合は返却される可能性があります

function wc_DhAgree

int wc_DhAgree(
    DhKey * key,
    byte * agree,
    word32 * agreeSz,
    const byte * priv,
    word32 privSz,
    const byte * otherPub,
    word32 pubSz
)

この関数は、ローカル秘密鍵と受信した公開鍵に基づいて合意された秘密鍵を生成します。交換の両側で完了した場合、この関数は対称通信のための秘密鍵の合意を生成します。共有秘密鍵の生成に成功すると、書かれた秘密鍵のサイズは仲間に保存されます。

Parameters:

  • key 共有キーを計算するために使用するDHKEY構造体へのポインタ
  • agree 秘密キーを保存するバッファへのポインタ
  • agreeSz 成功した後に秘密鍵のサイズを保持します
  • priv ローカル秘密鍵を含むバッファへのポインタ
  • privSz 地元の秘密鍵のサイズ
  • otherPub 受信した公開鍵を含むバッファへのポインタ Example
DhKey key;
int ret;
byte priv[256];
byte agree[256];
word32 agreeSz;

// initialize key, set key prime and base
// wc_DhGenerateKeyPair -- store private key in priv
byte pub[] = { // initialized with the received public key };
ret = wc_DhAgree(&key, agree, &agreeSz, priv, sizeof(priv), pub,
sizeof(pub));
if ( ret != 0 ) {
    // error generating shared key
}

See: wc_DhGenerateKeyPair

Return:

  • 0 合意された秘密鍵の生成に成功しました
  • MP_INIT_E 共有秘密鍵の生成中にエラーが発生した場合に返却される可能性があります
  • MP_READ_E 共有秘密鍵の生成中にエラーが発生した場合に返却される可能性があります
  • MP_EXPTMOD_E 共有秘密鍵の生成中にエラーが発生した場合に返却される可能性があります
  • MP_TO_E 共有秘密鍵の生成中にエラーが発生した場合に返却される可能性があります

function wc_DhKeyDecode

int wc_DhKeyDecode(
    const byte * input,
    word32 * inOutIdx,
    DhKey * key,
    word32 
)

この機能は、DERフォーマットのキーを含む与えられた入力バッファからDiffie-Hellmanキーをデコードします。結果をDHKEY構造体に格納します。

Parameters:

  • input derフォーマットされたdiffie-hellmanキーを含むバッファへのポインタ
  • inOutIdx キーをデコードしている間に解析されたインデックスを保存する整数へのポインタ
  • key 入力キーで初期化するためのDHKEY構造体へのポインタ Example
DhKey key;
word32 idx = 0;

byte keyBuff[1024];
// initialize with DER formatted key
wc_DhKeyInit(&key);
ret = wc_DhKeyDecode(keyBuff, &idx, &key, sizeof(keyBuff));

if ( ret != 0 ) {
    // error decoding key
}

See: wc_DhSetKey

Return:

  • 0 入力キーの復号に成功したときに返されます
  • ASN_PARSE_E 入力のシーケンスを解析したエラーがある場合に返されます
  • ASN_DH_KEY_E 解析された入力から秘密鍵パラメータを読み取るエラーがある場合

function wc_DhSetKey

int wc_DhSetKey(
    DhKey * key,
    const byte * p,
    word32 pSz,
    const byte * g,
    word32 gSz
)

この関数は、入力秘密鍵パラメータを使用してDHKEY構造体のキーを設定します。WC_DHKEYDECODEとは異なり、この関数は入力キーがDERフォーマットでフォーマットされ、代わりにPARSED入力パラメータP(Prime)とG(Base)を受け入れる必要はありません。

Parameters:

  • key キーを設定するDHKEY構造体へのポインタ
  • p キーで使用するためのプライムを含むバッファへのポインタ
  • pSz 入力プライムの長さ
  • g キーで使用するためのベースを含むバッファへのポインタ Example
DhKey key;

byte p[] = { // initialize with prime };
byte g[] = { // initialize with base };
wc_DhKeyInit(&key);
ret = wc_DhSetKey(key, p, sizeof(p), g, sizeof(g));

if ( ret != 0 ) {
    // error setting key
}

See: wc_DhKeyDecode

Return:

  • 0 鍵の設定に成功しました
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLに評価された場合に返されます。
  • MP_INIT_E ストレージのキーパラメータの初期化中にエラーがある場合に返されます。
  • ASN_DH_KEY_E DHキーパラメータPおよびGでエラーの読み取りがある場合は返されます

function wc_DhParamsLoad

int wc_DhParamsLoad(
    const byte * input,
    word32 inSz,
    byte * p,
    word32 * pInOutSz,
    byte * g,
    word32 * gInOutSz
)

この関数は、与えられた入力バッファからDiffie-HellmanパラメータP(Prime)とG(ベース)をフォーマットされています。

Parameters:

  • input 解析するDERフォーマットされたDifie-Hellman証明書を含むバッファへのポインタ
  • inSz 入力バッファのサイズ
  • p 解析されたプライムを保存するバッファへのポインタ
  • pInOutSz Pバッファ内の使用可能なサイズを含むWord32オブジェクトへのポインタ。関数呼び出しを完了した後にバッファに書き込まれたバイト数で上書きされます。
  • g 解析されたベースを保存するバッファへのポインタ Example
byte dhCert[] = { initialize with DER formatted certificate };
byte p[MAX_DH_SIZE];
byte g[MAX_DH_SIZE];
word32 pSz = MAX_DH_SIZE;
word32 gSz = MAX_DH_SIZE;

ret = wc_DhParamsLoad(dhCert, sizeof(dhCert), p, &pSz, g, &gSz);
if ( ret != 0 ) {
    // error parsing inputs
}

See:

Return:

  • 0 DHパラメータの抽出に成功しました
  • ASN_PARSE_E DERフォーマットのDH証明書の解析中にエラーが発生した場合に返されます。
  • BUFFER_E 解析されたパラメータを格納するためにPまたはGに不適切なスペースがある場合

function wc_Dh_ffdhe2048_Get

const DhParams * wc_Dh_ffdhe2048_Get(
    void 
)

See:

function wc_Dh_ffdhe3072_Get

const DhParams * wc_Dh_ffdhe3072_Get(
    void 
)

See:

function wc_Dh_ffdhe4096_Get

const DhParams * wc_Dh_ffdhe4096_Get(
    void 
)

See:

function wc_Dh_ffdhe6144_Get

const DhParams * wc_Dh_ffdhe6144_Get(
    void 
)

See:

function wc_Dh_ffdhe8192_Get

const DhParams * wc_Dh_ffdhe8192_Get(
    void 
)

See:

function wc_DhCheckKeyPair

int wc_DhCheckKeyPair(
    DhKey * key,
    const byte * pub,
    word32 pubSz,
    const byte * priv,
    word32 privSz
)

function wc_DhCheckPrivKey

int wc_DhCheckPrivKey(
    DhKey * key,
    const byte * priv,
    word32 pubSz
)

Updated on 2024-04-19 at 02:10:11 +0000