diff options
Diffstat (limited to '')
-rw-r--r-- | security/nss/lib/freebl/blapii.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/security/nss/lib/freebl/blapii.h b/security/nss/lib/freebl/blapii.h new file mode 100644 index 0000000000..a373b84d3b --- /dev/null +++ b/security/nss/lib/freebl/blapii.h @@ -0,0 +1,111 @@ +/* + * 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" + +/* 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); + +/* Freebl state. */ +PRBool aesni_support(); +PRBool clmul_support(); +PRBool sha_support(); +PRBool avx_support(); +PRBool avx2_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_ */ |