コンテンツにスキップ

dsa.h

Functions

Name
int wc_InitDsaKey(DsaKey * key)
この関数は、デジタル署名アルゴリズム(DSA)を介した認証に使用するためにDSAKEYオブジェクトを初期化します。
void wc_FreeDsaKey(DsaKey * key)
この関数は、使用された後にdsakeyオブジェクトを解放します。
int wc_DsaSign(const byte * digest, byte * out, DsaKey * key, WC_RNG * rng)
この機能は入力ダイジェストに署名し、結果を出力バッファーに格納します。
int wc_DsaVerify(const byte * digest, const byte * sig, DsaKey * key, int * answer)
この関数は、秘密鍵を考えると、ダイジェストの署名を検証します。回答パラメータでキーが正しく検証されているかどうか、正常な検証に対応する1、および失敗した検証に対応する0が格納されます。
int wc_DsaPublicKeyDecode(const byte * input, word32 * inOutIdx, DsaKey * key, word32 inSz)
この機能は、DSA公開鍵を含むDERフォーマットの証明書バッファを復号し、与えられたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。
int wc_DsaPrivateKeyDecode(const byte * input, word32 * inOutIdx, DsaKey * key, word32 inSz)
この機能は、DSA秘密鍵を含むDERフォーマットの証明書バッファをデコードし、指定されたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。
int wc_DsaKeyToDer(DsaKey * key, byte * output, word32 inLen)
DSAKEYキーをDERフォーマット、出力への書き込み(Inlen)、書き込まれたバイトを返します。
int wc_MakeDsaKey(WC_RNG * rng, DsaKey * dsa)
DSAキーを作成します。
int wc_MakeDsaParameters(WC_RNG * rng, int modulus_size, DsaKey * dsa)
FIPS 186-4は、modulus_size値の有効な値を定義します(1024,160)(2048,256)(3072,256)

Functions Documentation

function wc_InitDsaKey

int wc_InitDsaKey(
    DsaKey * key
)

この関数は、デジタル署名アルゴリズム(DSA)を介した認証に使用するためにDSAKEYオブジェクトを初期化します。

See: wc_FreeDsaKey

Return:

  • 0 成功に戻りました。
  • BAD_FUNC_ARG NULLキーが渡された場合に返されます。 Example
DsaKey key;
int ret;
ret = wc_InitDsaKey(&key); // initialize DSA key

function wc_FreeDsaKey

void wc_FreeDsaKey(
    DsaKey * key
)

この関数は、使用された後にdsakeyオブジェクトを解放します。

See: wc_FreeDsaKey

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

DsaKey key;
// initialize key, use for authentication
...
wc_FreeDsaKey(&key); // free DSA key

function wc_DsaSign

int wc_DsaSign(
    const byte * digest,
    byte * out,
    DsaKey * key,
    WC_RNG * rng
)

この機能は入力ダイジェストに署名し、結果を出力バッファーに格納します。

Parameters:

  • digest 署名するハッシュへのポインタ
  • out 署名を保存するバッファへのポインタ
  • key 署名を生成するための初期化されたDsakey構造へのポインタ Example
DsaKey key;
// initialize DSA key, load private Key
int ret;
WC_RNG rng;
wc_InitRng(&rng);
byte hash[] = { // initialize with hash digest };
byte signature[40]; // signature will be 40 bytes (320 bits)

ret = wc_DsaSign(hash, signature, &key, &rng);
if (ret != 0) {
    // error generating DSA signature
}

See: wc_DsaVerify

Return:

  • 0 入力ダイジェストに正常に署名したときに返されました
  • MP_INIT_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_READ_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_CMP_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_INVMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_EXPTMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MUL_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_ADD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MULMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_TO_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MEM DSA署名の処理にエラーがある場合は返される可能性があります。

function wc_DsaVerify

int wc_DsaVerify(
    const byte * digest,
    const byte * sig,
    DsaKey * key,
    int * answer
)

この関数は、秘密鍵を考えると、ダイジェストの署名を検証します。回答パラメータでキーが正しく検証されているかどうか、正常な検証に対応する1、および失敗した検証に対応する0が格納されます。

Parameters:

  • digest 署名の主題を含むダイジェストへのポインタ
  • sig 確認する署名を含むバッファへのポインタ
  • key 署名を検証するための初期化されたDsakey構造へのポインタ Example
DsaKey key;
// initialize DSA key, load public Key

int ret;
int verified;
byte hash[] = { // initialize with hash digest };
byte signature[] = { // initialize with signature to verify };
ret = wc_DsaVerify(hash, signature, &key, &verified);
if (ret != 0) {
    // error processing verify request
} else if (answer == 0) {
    // invalid signature
}

See: wc_DsaSign

Return:

  • 0 検証要求の処理に成功したときに返されます。注:これは、署名が検証されていることを意味するわけではなく、関数が成功したというだけです。
  • MP_INIT_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_READ_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_CMP_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_INVMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_EXPTMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MUL_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_ADD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MULMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_TO_E DSA署名の処理にエラーがある場合は返される可能性があります。
  • MP_MEM DSA署名の処理にエラーがある場合は返される可能性があります。

function wc_DsaPublicKeyDecode

int wc_DsaPublicKeyDecode(
    const byte * input,
    word32 * inOutIdx,
    DsaKey * key,
    word32 inSz
)

この機能は、DSA公開鍵を含むDERフォーマットの証明書バッファを復号し、与えられたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。

Parameters:

  • input DERフォーマットDSA公開鍵を含むバッファへのポインタ
  • inOutIdx 証明書の最後のインデックスを保存する整数へのポインタ
  • key 公開鍵を保存するDsakey構造へのポインタ Example
int ret, idx=0;

DsaKey key;
wc_InitDsaKey(&key);
byte derBuff[] = { // DSA public key};
ret = wc_DsaPublicKeyDecode(derBuff, &idx, &key, inSz);
if (ret != 0) {
    // error reading public key
}

See:

Return:

  • 0 dsakeyオブジェクトの公開鍵を正常に設定する
  • ASN_PARSE_E 証明書バッファを読みながらエンコーディングにエラーがある場合
  • ASN_DH_KEY_E DSAパラメータの1つが誤ってフォーマットされている場合に返されます

function wc_DsaPrivateKeyDecode

int wc_DsaPrivateKeyDecode(
    const byte * input,
    word32 * inOutIdx,
    DsaKey * key,
    word32 inSz
)

この機能は、DSA秘密鍵を含むDERフォーマットの証明書バッファをデコードし、指定されたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。

Parameters:

  • input DERフォーマットDSA秘密鍵を含むバッファへのポインタ
  • inOutIdx 証明書の最後のインデックスを保存する整数へのポインタ
  • key 秘密鍵を保存するDSakey構造へのポインタ Example
int ret, idx=0;

DsaKey key;
wc_InitDsaKey(&key);
byte derBuff[] = { // DSA private key };
ret = wc_DsaPrivateKeyDecode(derBuff, &idx, &key, inSz);
if (ret != 0) {
    // error reading private key
}

See:

Return:

  • 0 dsakeyオブジェクトの秘密鍵を正常に設定するに返されました
  • ASN_PARSE_E 証明書バッファを読みながらエンコーディングにエラーがある場合
  • ASN_DH_KEY_E DSAパラメータの1つが誤ってフォーマットされている場合に返されます

function wc_DsaKeyToDer

int wc_DsaKeyToDer(
    DsaKey * key,
    byte * output,
    word32 inLen
)

DSAKEYキーをDERフォーマット、出力への書き込み(Inlen)、書き込まれたバイトを返します。

Parameters:

  • key 変換するdsakey構造へのポインタ。
  • output 変換キーの出力バッファへのポインタ。 Example
DsaKey key;
WC_RNG rng;
int derSz;
int bufferSize = // Sufficient buffer size;
byte der[bufferSize];

wc_InitDsaKey(&key);
wc_InitRng(&rng);
wc_MakeDsaKey(&rng, &key);
derSz = wc_DsaKeyToDer(&key, der, bufferSize);

See:

Return:

  • outLen 成功、書かれたバイト数
  • BAD_FUNC_ARG キーまたは出力はNULLまたはキー - >タイプがDSA_PRIVATEではありません。
  • MEMORY_E メモリの割り当て中にエラーが発生しました。

function wc_MakeDsaKey

int wc_MakeDsaKey(
    WC_RNG * rng,
    DsaKey * dsa
)

DSAキーを作成します。

Parameters:

  • rng WC_RNG構造体へのポインタ。 Example
WC_RNG rng;
DsaKey dsa;
wc_InitRng(&rng);
wc_InitDsa(&dsa);
if(wc_MakeDsaKey(&rng, &dsa) != 0)
{
    // Error creating key
}

See:

Return:

  • MP_OKAY 成功
  • BAD_FUNC_ARG RNGまたはDSAのどちらかがnullです。
  • MEMORY_E バッファにメモリを割り当てることができませんでした。
  • MP_INIT_E MP_INTの初期化エラー

function wc_MakeDsaParameters

int wc_MakeDsaParameters(
    WC_RNG * rng,
    int modulus_size,
    DsaKey * dsa
)

FIPS 186-4は、modulus_size値の有効な値を定義します(1024,160)(2048,256)(3072,256)

Parameters:

  • rng WolfCrypt RNGへのポインタ。
  • modulus_size 1024,2048、または3072は有効な値です。 Example
DsaKey key;
WC_RNG rng;
wc_InitDsaKey(&key);
wc_InitRng(&rng);
if(wc_MakeDsaParameters(&rng, 1024, &genKey) != 0)
{
    // Handle error
}

See:

Return:

  • 0 成功
  • BAD_FUNC_ARG RNGまたはDSAはNULLまたはMODULUS_SIZEが無効です。
  • MEMORY_E メモリを割り当てようとするエラーが発生しました。

Source code


int wc_InitDsaKey(DsaKey* key);

void wc_FreeDsaKey(DsaKey* key);

int wc_DsaSign(const byte* digest, byte* out,
                           DsaKey* key, WC_RNG* rng);

int wc_DsaVerify(const byte* digest, const byte* sig,
                             DsaKey* key, int* answer);

int wc_DsaPublicKeyDecode(const byte* input, word32* inOutIdx,
                                      DsaKey* key, word32 inSz);

int wc_DsaPrivateKeyDecode(const byte* input, word32* inOutIdx,
                                       DsaKey* key, word32 inSz);

int wc_DsaKeyToDer(DsaKey* key, byte* output, word32 inLen);

int wc_MakeDsaKey(WC_RNG *rng, DsaKey *dsa);

int wc_MakeDsaParameters(WC_RNG *rng, int modulus_size, DsaKey *dsa);

Updated on 2024-04-18 at 02:49:59 +0000