crypto.h

All headers

crypto.h contains functions for initializing the crypto library.

  1. CRYPTO_library_init
  2. CRYPTO_is_confidential_build
  3. CRYPTO_has_asm
  4. BORINGSSL_self_test
  5. CRYPTO_pre_sandbox_init
  6. FIPS monitoring
  7. FIPS_mode
  8. fips_counter_t
  9. FIPS_read_counter
  10. Deprecated functions
  11. OPENSSL_VERSION_TEXT
  12. OPENSSL_VERSION
  13. OPENSSL_CFLAGS
  14. OPENSSL_BUILT_ON
  15. OPENSSL_PLATFORM
  16. OPENSSL_DIR
  17. OpenSSL_version
  18. SSLEAY_VERSION
  19. SSLEAY_CFLAGS
  20. SSLEAY_BUILT_ON
  21. SSLEAY_PLATFORM
  22. SSLEAY_DIR
  23. SSLeay_version
  24. SSLeay
  25. OpenSSL_version_num
  26. CRYPTO_malloc_init
  27. OPENSSL_malloc_init
  28. ENGINE_load_builtin_engines
  29. ENGINE_register_all_complete
  30. OPENSSL_load_builtin_modules
  31. OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS
  32. OPENSSL_INIT_LOAD_CRYPTO_STRINGS
  33. OPENSSL_INIT_ADD_ALL_CIPHERS
  34. OPENSSL_INIT_ADD_ALL_DIGESTS
  35. OPENSSL_INIT_NO_ADD_ALL_CIPHERS
  36. OPENSSL_INIT_NO_ADD_ALL_DIGESTS
  37. OPENSSL_INIT_LOAD_CONFIG
  38. OPENSSL_INIT_NO_LOAD_CONFIG
  39. OPENSSL_init_crypto
  40. OPENSSL_cleanup
  41. FIPS_mode_set

CRYPTO_library_init initializes the crypto library. It must be called if the library is built with BORINGSSL_NO_STATIC_INITIALIZER. Otherwise, it does nothing and a static initializer is used instead. It is safe to call this function multiple times and concurrently from multiple threads.

On some ARM configurations, this function may require filesystem access and should be called before entering a sandbox.

OPENSSL_EXPORT void CRYPTO_library_init(void);

CRYPTO_is_confidential_build returns one if the linked version of BoringSSL has been built with the BORINGSSL_CONFIDENTIAL define and zero otherwise.

This is used by some consumers to identify whether they are using an internal version of BoringSSL.

OPENSSL_EXPORT int CRYPTO_is_confidential_build(void);

CRYPTO_has_asm returns one unless BoringSSL was built with OPENSSL_NO_ASM, in which case it returns zero.

OPENSSL_EXPORT int CRYPTO_has_asm(void);

BORINGSSL_self_test triggers the FIPS KAT-based self tests. It returns one on success and zero on error.

OPENSSL_EXPORT int BORINGSSL_self_test(void);

CRYPTO_pre_sandbox_init initializes the crypto library, pre-acquiring some unusual resources to aid running in sandboxed environments. It is safe to call this function multiple times and concurrently from multiple threads.

For more details on using BoringSSL in a sandboxed environment, see SANDBOXING.md in the source tree.

OPENSSL_EXPORT void CRYPTO_pre_sandbox_init(void);

FIPS monitoring

FIPS_mode returns zero unless BoringSSL is built with BORINGSSL_FIPS, in which case it returns one.

OPENSSL_EXPORT int FIPS_mode(void);

fips_counter_t denotes specific APIs/algorithms. A counter is maintained for each in FIPS mode so that tests can be written to assert that the expected, FIPS functions are being called by a certain peice of code.

enum fips_counter_t {
  fips_counter_evp_aes_128_gcm = 0,
  fips_counter_evp_aes_256_gcm = 1,
  fips_counter_evp_aes_128_ctr = 2,
  fips_counter_evp_aes_256_ctr = 3,

  fips_counter_max = 3,
};

FIPS_read_counter returns a counter of the number of times the specific function denoted by counter has been used. This always returns zero unless BoringSSL was built with BORINGSSL_FIPS_COUNTERS defined.

OPENSSL_EXPORT size_t FIPS_read_counter(enum fips_counter_t counter);

Deprecated functions.

OPENSSL_VERSION_TEXT contains a string the identifies the version of “OpenSSL”. node.js requires a version number in this text.

#define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1 (compatible; BoringSSL)"
#define OPENSSL_VERSION 0
#define OPENSSL_CFLAGS 1
#define OPENSSL_BUILT_ON 2
#define OPENSSL_PLATFORM 3
#define OPENSSL_DIR 4

OpenSSL_version is a compatibility function that returns the string "BoringSSL" if which is OPENSSL_VERSION and placeholder strings otherwise.

OPENSSL_EXPORT const char *OpenSSL_version(int which);
#define SSLEAY_VERSION OPENSSL_VERSION
#define SSLEAY_CFLAGS OPENSSL_CFLAGS
#define SSLEAY_BUILT_ON OPENSSL_BUILT_ON
#define SSLEAY_PLATFORM OPENSSL_PLATFORM
#define SSLEAY_DIR OPENSSL_DIR

SSLeay_version calls OpenSSL_version.

OPENSSL_EXPORT const char *SSLeay_version(int which);

SSLeay is a compatibility function that returns OPENSSL_VERSION_NUMBER from base.h.

OPENSSL_EXPORT unsigned long SSLeay(void);

OpenSSL_version_num is a compatibility function that returns OPENSSL_VERSION_NUMBER from base.h.

OPENSSL_EXPORT unsigned long OpenSSL_version_num(void);

CRYPTO_malloc_init returns one.

OPENSSL_EXPORT int CRYPTO_malloc_init(void);

OPENSSL_malloc_init returns one.

OPENSSL_EXPORT int OPENSSL_malloc_init(void);

ENGINE_load_builtin_engines does nothing.

OPENSSL_EXPORT void ENGINE_load_builtin_engines(void);

ENGINE_register_all_complete returns one.

OPENSSL_EXPORT int ENGINE_register_all_complete(void);

OPENSSL_load_builtin_modules does nothing.

OPENSSL_EXPORT void OPENSSL_load_builtin_modules(void);
#define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0
#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0
#define OPENSSL_INIT_ADD_ALL_CIPHERS 0
#define OPENSSL_INIT_ADD_ALL_DIGESTS 0
#define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0
#define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0
#define OPENSSL_INIT_LOAD_CONFIG 0
#define OPENSSL_INIT_NO_LOAD_CONFIG 0

OPENSSL_init_crypto calls CRYPTO_library_init and returns one.

OPENSSL_EXPORT int OPENSSL_init_crypto(uint64_t opts,
                                       const OPENSSL_INIT_SETTINGS *settings);

OPENSSL_cleanup does nothing.

OPENSSL_EXPORT void OPENSSL_cleanup(void);

FIPS_mode_set returns one if on matches whether BoringSSL was built with BORINGSSL_FIPS and zero otherwise.

OPENSSL_EXPORT int FIPS_mode_set(int on);