Algorithms - DSA
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 メモリを割り当てようとするエラーが発生しました。
Updated on 2024-12-03 at 02:38:42 +0000