/* * blapii.h - private data structures and prototypes for the freebl library * * 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/. */ #ifndef _BLAPII_H_ #define _BLAPII_H_ #include "blapit.h" #include "mpi.h" #include "hasht.h" /* max block size of supported block ciphers */ #define MAX_BLOCK_SIZE 16 typedef SECStatus (*freeblCipherFunc)(void *cx, unsigned char *output, unsigned int *outputLen, unsigned int maxOutputLen, const unsigned char *input, unsigned int inputLen, unsigned int blocksize); typedef SECStatus (*freeblAeadFunc)(void *cx, unsigned char *output, unsigned int *outputLen, unsigned int maxOutputLen, const unsigned char *input, unsigned int inputLen, void *params, unsigned int paramsLen, const unsigned char *aad, unsigned int aadLen, unsigned int blocksize); typedef void (*freeblDestroyFunc)(void *cx, PRBool freeit); SEC_BEGIN_PROTOS #ifndef NSS_FIPS_DISABLED SECStatus BL_FIPSEntryOK(PRBool freeblOnly, PRBool rerun); PRBool BL_POSTRan(PRBool freeblOnly); #endif #if defined(XP_UNIX) && !defined(NO_FORK_CHECK) extern PRBool bl_parentForkedAfterC_Initialize; #define SKIP_AFTER_FORK(x) \ if (!bl_parentForkedAfterC_Initialize) \ x #else #define SKIP_AFTER_FORK(x) x #endif SEC_END_PROTOS #if defined(NSS_X86_OR_X64) #define HAVE_UNALIGNED_ACCESS 1 #endif #if defined(__clang__) #define HAVE_NO_SANITIZE_ATTR __has_attribute(no_sanitize) #else #define HAVE_NO_SANITIZE_ATTR 0 #endif /* Alignment helpers. */ #if defined(_MSC_VER) #define pre_align __declspec(align(16)) #define post_align #elif defined(__GNUC__) #define pre_align #define post_align __attribute__((aligned(16))) #else #define pre_align #define post_align #endif #if defined(HAVE_UNALIGNED_ACCESS) && HAVE_NO_SANITIZE_ATTR #define NO_SANITIZE_ALIGNMENT __attribute__((no_sanitize("alignment"))) #else #define NO_SANITIZE_ALIGNMENT #endif #undef HAVE_NO_SANITIZE_ATTR SECStatus RSA_Init(); SECStatus generate_prime(mp_int *prime, int primeLen); SECStatus RSA_EMSAEncodePSS(unsigned char *em, unsigned int emLen, unsigned int emBits, const unsigned char *mHash, HASH_HashType hashAlg, HASH_HashType maskHashAlg, const unsigned char *salt, unsigned int saltLen); /* Freebl state. */ PRBool aesni_support(); PRBool clmul_support(); PRBool sha_support(); PRBool avx_support(); PRBool avx2_support(); PRBool adx_support(); PRBool ssse3_support(); PRBool sse4_1_support(); PRBool sse4_2_support(); PRBool arm_neon_support(); PRBool arm_aes_support(); PRBool arm_pmull_support(); PRBool arm_sha1_support(); PRBool arm_sha2_support(); PRBool ppc_crypto_support(); #ifdef NSS_FIPS_DISABLED #define BLAPI_CLEAR_STACK(stack_size) #else #define BLAPI_CLEAR_STACK(stack_size) \ { \ volatile char _stkclr[stack_size]; \ PORT_Memset((void *)&_stkclr[0], 0, stack_size); \ } #endif #endif /* _BLAPII_H_ */