123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- /*!
- \ingroup DSA
- \brief この関数は、デジタル署名アルゴリズム(DSA)を介した認証に使用するためにDSAKEYオブジェクトを初期化します。
- \return 0 成功に戻りました。
- \return BAD_FUNC_ARG NULLキーが渡された場合に返されます。
- _Example_
- \code
- DsaKey key;
- int ret;
- ret = wc_InitDsaKey(&key); // initialize DSA key
- \endcode
- \sa wc_FreeDsaKey
- */
- int wc_InitDsaKey(DsaKey* key);
- /*!
- \ingroup DSA
- \brief この関数は、使用された後にdsakeyオブジェクトを解放します。
- \return none いいえ返します。
- _Example_
- \code
- DsaKey key;
- // initialize key, use for authentication
- ...
- wc_FreeDsaKey(&key); // free DSA key
- \endcode
- \sa wc_FreeDsaKey
- */
- void wc_FreeDsaKey(DsaKey* key);
- /*!
- \ingroup DSA
- \brief この機能は入力ダイジェストに署名し、結果を出力バッファーに格納します。
- \return 0 入力ダイジェストに正常に署名したときに返されました
- \return MP_INIT_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_READ_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_CMP_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_INVMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_EXPTMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MUL_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_ADD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MULMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_TO_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MEM DSA署名の処理にエラーがある場合は返される可能性があります。
- \param digest 署名するハッシュへのポインタ
- \param out 署名を保存するバッファへのポインタ
- \param key 署名を生成するための初期化されたDsakey構造へのポインタ
- _Example_
- \code
- 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
- }
- \endcode
- \sa wc_DsaVerify
- */
- int wc_DsaSign(const byte* digest, byte* out,
- DsaKey* key, WC_RNG* rng);
- /*!
- \ingroup DSA
- \brief この関数は、秘密鍵を考えると、ダイジェストの署名を検証します。回答パラメータでキーが正しく検証されているかどうか、正常な検証に対応する1、および失敗した検証に対応する0が格納されます。
- \return 0 検証要求の処理に成功したときに返されます。注:これは、署名が検証されていることを意味するわけではなく、関数が成功したというだけです。
- \return MP_INIT_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_READ_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_CMP_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_INVMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_EXPTMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MUL_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_ADD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MULMOD_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_TO_E DSA署名の処理にエラーがある場合は返される可能性があります。
- \return MP_MEM DSA署名の処理にエラーがある場合は返される可能性があります。
- \param digest 署名の主題を含むダイジェストへのポインタ
- \param sig 確認する署名を含むバッファへのポインタ
- \param key 署名を検証するための初期化されたDsakey構造へのポインタ
- _Example_
- \code
- 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
- }
- \endcode
- \sa wc_DsaSign
- */
- int wc_DsaVerify(const byte* digest, const byte* sig,
- DsaKey* key, int* answer);
- /*!
- \ingroup DSA
- \brief この機能は、DSA公開鍵を含むDERフォーマットの証明書バッファを復号し、与えられたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。
- \return 0 dsakeyオブジェクトの公開鍵を正常に設定する
- \return ASN_PARSE_E 証明書バッファを読みながらエンコーディングにエラーがある場合
- \return ASN_DH_KEY_E DSAパラメータの1つが誤ってフォーマットされている場合に返されます
- \param input DERフォーマットDSA公開鍵を含むバッファへのポインタ
- \param inOutIdx 証明書の最後のインデックスを保存する整数へのポインタ
- \param key 公開鍵を保存するDsakey構造へのポインタ
- _Example_
- \code
- 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
- }
- \endcode
- \sa wc_InitDsaKey
- \sa wc_DsaPrivateKeyDecode
- */
- int wc_DsaPublicKeyDecode(const byte* input, word32* inOutIdx,
- DsaKey* key, word32 inSz);
- /*!
- \ingroup DSA
- \brief この機能は、DSA秘密鍵を含むDERフォーマットの証明書バッファをデコードし、指定されたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。
- \return 0 dsakeyオブジェクトの秘密鍵を正常に設定するに返されました
- \return ASN_PARSE_E 証明書バッファを読みながらエンコーディングにエラーがある場合
- \return ASN_DH_KEY_E DSAパラメータの1つが誤ってフォーマットされている場合に返されます
- \param input DERフォーマットDSA秘密鍵を含むバッファへのポインタ
- \param inOutIdx 証明書の最後のインデックスを保存する整数へのポインタ
- \param key 秘密鍵を保存するDSakey構造へのポインタ
- _Example_
- \code
- 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
- }
- \endcode
- \sa wc_InitDsaKey
- \sa wc_DsaPublicKeyDecode
- */
- int wc_DsaPrivateKeyDecode(const byte* input, word32* inOutIdx,
- DsaKey* key, word32 inSz);
- /*!
- \ingroup DSA
- \brief DSAKEYキーをDERフォーマット、出力への書き込み(Inlen)、書き込まれたバイトを返します。
- \return outLen 成功、書かれたバイト数
- \return BAD_FUNC_ARG キーまたは出力はNULLまたはキー - >タイプがDSA_PRIVATEではありません。
- \return MEMORY_E メモリの割り当て中にエラーが発生しました。
- \param key 変換するdsakey構造へのポインタ。
- \param output 変換キーの出力バッファへのポインタ。
- _Example_
- \code
- 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);
- \endcode
- \sa wc_InitDsaKey
- \sa wc_FreeDsaKey
- \sa wc_MakeDsaKey
- */
- int wc_DsaKeyToDer(DsaKey* key, byte* output, word32 inLen);
- /*!
- \ingroup DSA
- \brief DSAキーを作成します。
- \return MP_OKAY 成功
- \return BAD_FUNC_ARG RNGまたはDSAのどちらかがnullです。
- \return MEMORY_E バッファにメモリを割り当てることができませんでした。
- \return MP_INIT_E MP_INTの初期化エラー
- \param rng WC_RNG構造体へのポインタ。
- _Example_
- \code
- WC_RNG rng;
- DsaKey dsa;
- wc_InitRng(&rng);
- wc_InitDsa(&dsa);
- if(wc_MakeDsaKey(&rng, &dsa) != 0)
- {
- // Error creating key
- }
- \endcode
- \sa wc_InitDsaKey
- \sa wc_FreeDsaKey
- \sa wc_DsaSign
- */
- int wc_MakeDsaKey(WC_RNG *rng, DsaKey *dsa);
- /*!
- \ingroup DSA
- \brief FIPS 186-4は、modulus_size値の有効な値を定義します(1024,160)(2048,256)(3072,256)
- \return 0 成功
- \return BAD_FUNC_ARG RNGまたはDSAはNULLまたはMODULUS_SIZEが無効です。
- \return MEMORY_E メモリを割り当てようとするエラーが発生しました。
- \param rng WolfCrypt RNGへのポインタ。
- \param modulus_size 1024,2048、または3072は有効な値です。
- _Example_
- \code
- DsaKey key;
- WC_RNG rng;
- wc_InitDsaKey(&key);
- wc_InitRng(&rng);
- if(wc_MakeDsaParameters(&rng, 1024, &genKey) != 0)
- {
- // Handle error
- }
- \endcode
- \sa wc_MakeDsaKey
- \sa wc_DsaKeyToDer
- \sa wc_InitDsaKey
- */
- int wc_MakeDsaParameters(WC_RNG *rng, int modulus_size, DsaKey *dsa);
|