diff options
Diffstat (limited to '')
-rw-r--r-- | security/nss/lib/freebl/ldvector.c | 493 |
1 files changed, 493 insertions, 0 deletions
diff --git a/security/nss/lib/freebl/ldvector.c b/security/nss/lib/freebl/ldvector.c new file mode 100644 index 0000000000..14ecfcaa25 --- /dev/null +++ b/security/nss/lib/freebl/ldvector.c @@ -0,0 +1,493 @@ +/* + * ldvector.c - platform dependent DSO containing freebl implementation. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifdef FREEBL_NO_DEPEND +#include "stubs.h" +extern int FREEBL_InitStubs(void); +#endif + +#include "loader.h" +#include "cmac.h" +#include "alghmac.h" +#include "hmacct.h" +#include "blapii.h" +#include "secerr.h" + +SECStatus +FREEBL_Deprecated(void) +{ + + PORT_SetError(SEC_ERROR_UNSUPPORTED_KEYALG); + return SECFailure; +} + +static const struct FREEBLVectorStr vector = { + + sizeof vector, + FREEBL_VERSION, + + RSA_NewKey, + RSA_PublicKeyOp, + RSA_PrivateKeyOp, + DSA_NewKey, + DSA_SignDigest, + DSA_VerifyDigest, + DSA_NewKeyFromSeed, + DSA_SignDigestWithSeed, + DH_GenParam, + DH_NewKey, + DH_Derive, + KEA_Derive, + KEA_Verify, + RC4_CreateContext, + RC4_DestroyContext, + RC4_Encrypt, + RC4_Decrypt, +#ifndef NSS_DISABLE_DEPRECATED_RC2 + RC2_CreateContext, + RC2_DestroyContext, + RC2_Encrypt, + RC2_Decrypt, +#else + (F_RC2_CreateContext)FREEBL_Deprecated, + (F_RC2_DestroyContext)FREEBL_Deprecated, + (F_RC2_Encrypt)FREEBL_Deprecated, + (F_RC2_Decrypt)FREEBL_Deprecated, +#endif + RC5_CreateContext, + RC5_DestroyContext, + RC5_Encrypt, + RC5_Decrypt, + DES_CreateContext, + DES_DestroyContext, + DES_Encrypt, + DES_Decrypt, + AES_CreateContext, + AES_DestroyContext, + AES_Encrypt, + AES_Decrypt, + MD5_Hash, + MD5_HashBuf, + MD5_NewContext, + MD5_DestroyContext, + MD5_Begin, + MD5_Update, + MD5_End, + MD5_FlattenSize, + MD5_Flatten, + MD5_Resurrect, + MD5_TraceState, + MD2_Hash, + MD2_NewContext, + MD2_DestroyContext, + MD2_Begin, + MD2_Update, + MD2_End, + MD2_FlattenSize, + MD2_Flatten, + MD2_Resurrect, + SHA1_Hash, + SHA1_HashBuf, + SHA1_NewContext, + SHA1_DestroyContext, + SHA1_Begin, + SHA1_Update, + SHA1_End, + SHA1_TraceState, + SHA1_FlattenSize, + SHA1_Flatten, + SHA1_Resurrect, + RNG_RNGInit, + RNG_RandomUpdate, + RNG_GenerateGlobalRandomBytes, + RNG_RNGShutdown, + PQG_ParamGen, + PQG_ParamGenSeedLen, + PQG_VerifyParams, + + /* End of Version 3.001. */ + + RSA_PrivateKeyOpDoubleChecked, + RSA_PrivateKeyCheck, + BL_Cleanup, + + /* End of Version 3.002. */ + + SHA256_NewContext, + SHA256_DestroyContext, + SHA256_Begin, + SHA256_Update, + SHA256_End, + SHA256_HashBuf, + SHA256_Hash, + SHA256_TraceState, + SHA256_FlattenSize, + SHA256_Flatten, + SHA256_Resurrect, + + SHA512_NewContext, + SHA512_DestroyContext, + SHA512_Begin, + SHA512_Update, + SHA512_End, + SHA512_HashBuf, + SHA512_Hash, + SHA512_TraceState, + SHA512_FlattenSize, + SHA512_Flatten, + SHA512_Resurrect, + + SHA384_NewContext, + SHA384_DestroyContext, + SHA384_Begin, + SHA384_Update, + SHA384_End, + SHA384_HashBuf, + SHA384_Hash, + SHA384_TraceState, + SHA384_FlattenSize, + SHA384_Flatten, + SHA384_Resurrect, + + /* End of Version 3.003. */ + + AESKeyWrap_CreateContext, + AESKeyWrap_DestroyContext, + AESKeyWrap_Encrypt, + AESKeyWrap_Decrypt, + + /* End of Version 3.004. */ + + BLAPI_SHVerify, + BLAPI_VerifySelf, + + /* End of Version 3.005. */ + + EC_NewKey, + EC_NewKeyFromSeed, + EC_ValidatePublicKey, + ECDH_Derive, + ECDSA_SignDigest, + ECDSA_VerifyDigest, + ECDSA_SignDigestWithSeed, + + /* End of Version 3.006. */ + /* End of Version 3.007. */ + + AES_InitContext, + AESKeyWrap_InitContext, + DES_InitContext, +#ifndef NSS_DISABLE_DEPRECATED_RC2 + RC2_InitContext, +#else + (F_RC2_InitContext)FREEBL_Deprecated, +#endif + RC4_InitContext, + + AES_AllocateContext, + AESKeyWrap_AllocateContext, + DES_AllocateContext, +#ifndef NSS_DISABLE_DEPRECATED_RC2 + RC2_AllocateContext, +#else + (F_RC2_AllocateContext)FREEBL_Deprecated, +#endif + RC4_AllocateContext, + + MD2_Clone, + MD5_Clone, + SHA1_Clone, + SHA256_Clone, + SHA384_Clone, + SHA512_Clone, + + TLS_PRF, + HASH_GetRawHashObject, + + HMAC_Create, + HMAC_Init, + HMAC_Begin, + HMAC_Update, + HMAC_Clone, + HMAC_Finish, + HMAC_Destroy, + + RNG_SystemInfoForRNG, + + /* End of Version 3.008. */ + + FIPS186Change_GenerateX, + FIPS186Change_ReduceModQForDSA, + + /* End of Version 3.009. */ + Camellia_InitContext, + Camellia_AllocateContext, + Camellia_CreateContext, + Camellia_DestroyContext, + Camellia_Encrypt, + Camellia_Decrypt, + + PQG_DestroyParams, + PQG_DestroyVerify, + +/* End of Version 3.010. */ + +#ifndef NSS_DISABLE_DEPRECATED_SEED + SEED_InitContext, + SEED_AllocateContext, + SEED_CreateContext, + SEED_DestroyContext, + SEED_Encrypt, + SEED_Decrypt, +#else + (F_SEED_InitContext)FREEBL_Deprecated, + (F_SEED_AllocateContext)FREEBL_Deprecated, + (F_SEED_CreateContext)FREEBL_Deprecated, + (F_SEED_DestroyContext)FREEBL_Deprecated, + (F_SEED_Encrypt)FREEBL_Deprecated, + (F_SEED_Decrypt)FREEBL_Deprecated, +#endif /* NSS_DISABLE_DEPRECATED_SEED */ + + BL_Init, + BL_SetForkState, + + PRNGTEST_Instantiate, + PRNGTEST_Reseed, + PRNGTEST_Generate, + + PRNGTEST_Uninstantiate, + + /* End of Version 3.011. */ + + RSA_PopulatePrivateKey, + + DSA_NewRandom, + + JPAKE_Sign, + JPAKE_Verify, + JPAKE_Round2, + JPAKE_Final, + + /* End of Version 3.012 */ + + TLS_P_hash, + SHA224_NewContext, + SHA224_DestroyContext, + SHA224_Begin, + SHA224_Update, + SHA224_End, + SHA224_HashBuf, + SHA224_Hash, + SHA224_TraceState, + SHA224_FlattenSize, + SHA224_Flatten, + SHA224_Resurrect, + SHA224_Clone, + BLAPI_SHVerifyFile, + + /* End of Version 3.013 */ + + PQG_ParamGenV2, + PRNGTEST_RunHealthTests, + + /* End of Version 3.014 */ + + HMAC_ConstantTime, + SSLv3_MAC_ConstantTime, + + /* End of Version 3.015 */ + + RSA_SignRaw, + RSA_CheckSignRaw, + RSA_CheckSignRecoverRaw, + RSA_EncryptRaw, + RSA_DecryptRaw, + RSA_EncryptOAEP, + RSA_DecryptOAEP, + RSA_EncryptBlock, + RSA_DecryptBlock, + RSA_SignPSS, + RSA_CheckSignPSS, + RSA_Sign, + RSA_CheckSign, + RSA_CheckSignRecover, + + /* End of Version 3.016 */ + + EC_FillParams, + EC_DecodeParams, + EC_CopyParams, + + /* End of Version 3.017 */ + + ChaCha20Poly1305_InitContext, + ChaCha20Poly1305_CreateContext, + ChaCha20Poly1305_DestroyContext, + ChaCha20Poly1305_Seal, + ChaCha20Poly1305_Open, + + /* End of Version 3.018 */ + + EC_GetPointSize, + + /* End of Version 3.019 */ + + BLAKE2B_Hash, + BLAKE2B_HashBuf, + BLAKE2B_MAC_HashBuf, + BLAKE2B_NewContext, + BLAKE2B_DestroyContext, + BLAKE2B_Begin, + BLAKE2B_MAC_Begin, + BLAKE2B_Update, + BLAKE2B_End, + BLAKE2B_FlattenSize, + BLAKE2B_Flatten, + BLAKE2B_Resurrect, + + /* End of Version 3.020 */ + + ChaCha20_Xor, + + /* End of version 3.021 */ + + CMAC_Init, + CMAC_Create, + CMAC_Begin, + CMAC_Update, + CMAC_Finish, + CMAC_Destroy, + + /* End of version 3.022 */ + ChaCha20Poly1305_Encrypt, + ChaCha20Poly1305_Decrypt, + AES_AEAD, + AESKeyWrap_EncryptKWP, + AESKeyWrap_DecryptKWP, + + /* End of version 3.023 */ + KEA_PrimeCheck, + + /* End of version 3.024 */ + ChaCha20_InitContext, + ChaCha20_CreateContext, + ChaCha20_DestroyContext, + + /* End of version 3.025 */ + + SHA3_224_NewContext, + SHA3_224_DestroyContext, + SHA3_224_FlattenSize, + SHA3_224_Begin, + SHA3_224_Update, + SHA3_224_End, + SHA3_224_HashBuf, + SHA3_224_Hash, + + SHA3_256_NewContext, + SHA3_256_DestroyContext, + SHA3_256_FlattenSize, + SHA3_256_Begin, + SHA3_256_Update, + SHA3_256_End, + SHA3_256_HashBuf, + SHA3_256_Hash, + + SHA3_384_NewContext, + SHA3_384_DestroyContext, + SHA3_384_FlattenSize, + SHA3_384_Begin, + SHA3_384_Update, + SHA3_384_End, + SHA3_384_HashBuf, + SHA3_384_Hash, + + SHA3_512_NewContext, + SHA3_512_DestroyContext, + SHA3_512_FlattenSize, + SHA3_512_Begin, + SHA3_512_Update, + SHA3_512_End, + SHA3_512_HashBuf, + SHA3_512_Hash, + + SHAKE_128_NewContext, + SHAKE_128_DestroyContext, + SHAKE_128_Begin, + SHAKE_128_Absorb, + SHAKE_128_SqueezeEnd, + SHAKE_128_HashBuf, + SHAKE_128_Hash, + + SHAKE_256_NewContext, + SHAKE_256_DestroyContext, + SHAKE_256_Begin, + SHAKE_256_Absorb, + SHAKE_256_SqueezeEnd, + SHAKE_256_HashBuf, + SHAKE_256_Hash, + + /* End of version 3.026 */ + + Kyber_NewKey, + Kyber_Encapsulate, + Kyber_Decapsulate, + + /* End of version 3.027 */ +}; + +const FREEBLVector* +FREEBL_GetVector(void) +{ +#ifdef FREEBL_NO_DEPEND + SECStatus rv; +#endif + +#define NSS_VERSION_VARIABLE __nss_freebl_version +#include "verref.h" + +#ifdef FREEBL_NO_DEPEND + /* this entry point is only valid if nspr and nss-util has been loaded */ + rv = FREEBL_InitStubs(); + if (rv != SECSuccess) { + return NULL; + } +#endif + +#ifndef NSS_FIPS_DISABLED + /* In FIPS mode make sure the Full self tests have been run before + * continuing. */ + BL_POSTRan(PR_FALSE); +#endif + + return &vector; +} + +#ifdef FREEBL_LOWHASH +static const struct NSSLOWVectorStr nssvector = { + sizeof nssvector, + NSSLOW_VERSION, + FREEBL_GetVector, + NSSLOW_Init, + NSSLOW_Shutdown, + NSSLOW_Reset, + NSSLOWHASH_NewContext, + NSSLOWHASH_Begin, + NSSLOWHASH_Update, + NSSLOWHASH_End, + NSSLOWHASH_Destroy, + NSSLOWHASH_Length +}; + +const NSSLOWVector* +NSSLOW_GetVector(void) +{ + /* POST check and stub init happens in FREEBL_GetVector() and + * NSSLOW_Init() respectively */ + return &nssvector; +} +#endif |