windows-nt/Source/XPSP1/NT/ds/win32/ntcrypto/dssinc/fxupbn.h
2020-09-26 16:20:57 +08:00

204 lines
4.4 KiB
C

#include <bignum.h>
#include "cryptdsa.h"
#include <crtdbg.h>
inline void WINAPI BN_ResetError(void)
{
SetMpErrno(MP_ERRNO_NO_ERROR);
}
inline DWORD WINAPI BN_MapError(BOOL fSts)
{
DWORD dwRet = ERROR_INTERNAL_ERROR;
if (fSts)
dwRet = ERROR_SUCCESS;
else if (MP_ERRNO_NO_MEMORY == GetMpErrno())
dwRet = ERROR_NOT_ENOUGH_MEMORY;
else
dwRet = (DWORD)NTE_FAIL;
return dwRet;
}
// extern digit_t Stdcall86 sub_same(digit_tc a[], digit_tc b[], digit_t c[], DWORDC d);
inline DWORD
BN_DSA_verify_j(
dsa_public_tc *pPubkey,
dsa_precomputed_tc *pPrecomputed)
{
BOOL fSts;
BN_ResetError();
fSts = DSA_verify_j(pPubkey, pPrecomputed);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_check_g(
DWORDC lngp_digits, // In
digit_tc *pGModular, // In
mp_modulus_t *pPModulo, // In
DWORDC lngq_digits, // In
digit_tc *pQDigit) // In
{
BOOL fSts;
BN_ResetError();
fSts = DSA_check_g(lngp_digits, pGModular, pPModulo, lngq_digits, pQDigit);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_parameter_verification(
dsa_public_tc *pPubkey,
dsa_precomputed_tc *pPrecomputed)
{
BOOL fSts;
BN_ResetError();
fSts = DSA_parameter_verification(pPubkey, pPrecomputed);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_precompute(
dsa_public_tc *pubkey, // In
dsa_precomputed_t *precomputed, // Out
const BOOL checkSC) // In
{
BOOL fSts;
BN_ResetError();
fSts = DSA_precompute(pubkey, precomputed, checkSC);
return BN_MapError(fSts);
}
inline DWORD
BN_from_modular(
digit_tc a[],
digit_t b[],
mp_modulus_tc *modulo)
{
DWORD dwSts;
BN_ResetError();
dwSts = from_modular(a, b, modulo);
if (ERROR_SUCCESS != BN_MapError(0 != dwSts))
dwSts = 0;
return dwSts;
}
inline DWORD
BN_mod_exp(
digit_tc base[],
digit_tc exponent[],
DWORDC lngexpon,
digit_t answer[],
mp_modulus_tc *modulo)
{
BN_ResetError();
mod_exp(base, exponent, lngexpon, answer, modulo);
return BN_MapError(TRUE);
}
inline DWORD
BN_to_modular(
digit_tc a[],
DWORDC lnga,
digit_t b[],
mp_modulus_tc *modulo)
{
DWORD dwSts;
BN_ResetError();
dwSts = to_modular(a, lnga, b, modulo);
if (ERROR_SUCCESS != BN_MapError(0 != dwSts))
dwSts = 0;
return dwSts;
}
inline DWORD
BN_DSA_gen_x_and_y(
BOOL fUseQ, // In
dsa_other_info *pOtherInfo, // In
dsa_private_t *privkey) // Out
{
BOOL fSts;
BN_ResetError();
fSts = DSA_gen_x_and_y(fUseQ, pOtherInfo, privkey);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_precompute_pgy(
dsa_public_tc *pubkey, // In
dsa_precomputed_t *precomputed) // Out
{
BOOL fSts;
BN_ResetError();
fSts = DSA_precompute_pgy(pubkey, precomputed);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_key_generation(
DWORDC nbitp, // In
DWORDC nbitq, // In
dsa_other_info *pOtherInfo, // In
dsa_private_t *privkey) // Out
{
BOOL fSts;
BN_ResetError();
fSts = DSA_key_generation(nbitp, nbitq, pOtherInfo, privkey);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_signature_verification(
DWORDC message_hash[SHA_DWORDS],
dsa_public_tc *pubkey,
dsa_precomputed_tc *precomputed_argument,
dsa_signature_tc *signature,
dsa_other_info *pOtherInfo)
{
BOOL fSts;
BN_ResetError();
fSts = DSA_signature_verification(message_hash, pubkey,
precomputed_argument,
signature, pOtherInfo);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_sign(
DWORDC message_hash[SHA_DWORDS], /* TBD */
dsa_private_tc *privkey,
dsa_signature_t *signature,
dsa_other_info *pOtherInfo)
{
BOOL fSts;
BN_ResetError();
fSts = DSA_sign(message_hash, privkey, signature, pOtherInfo);
return BN_MapError(fSts);
}
inline DWORD
BN_create_modulus(
digit_tc a[],
DWORDC lnga,
reddir_tc reddir,
mp_modulus_t *modulo)
{
BOOL fSts;
BN_ResetError();
fSts = create_modulus(a, lnga, reddir, modulo);
return BN_MapError(fSts);
}
inline DWORD
BN_DSA_key_import_fillin(
dsa_private_t *privkey)
{
BOOL fSts;
BN_ResetError();
fSts = DSA_key_import_fillin(privkey);
return BN_MapError(fSts);
}