mirror of https://github.com/wolfSSL/wolfssl.git
238 lines
10 KiB
C
238 lines
10 KiB
C
/*!
|
||
\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);
|