EVP_SET_DEFAULT_PROPERTIES(3ossl)
β¨ EVP_SET_DEFAULT_PROPERTIES β¨
okay so this is the EVP_SET_DEFAULT_PROPERTIES(3ossl) page from the OpenSSL manual, and bestie, it's literally all about setting the default properties that your future algorithm fetches are gonna use. it's giving "set it and forget it" but make it cryptography π
πΈ NAME πΈ
EVP_set_default_properties, EVP_default_properties_enable_fips, EVP_default_properties_is_fips_enabled, EVP_get1_default_properties β managing the default properties for future algorithm fetches π¦
π SYNOPSIS π
#include <openssl/evp.h>
int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq);
char *EVP_get1_default_properties(OSSL_LIB_CTX *libctx);
int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable);
int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx);
π DESCRIPTION π
EVP_set_default_properties() sets the default properties for all future EVP algorithm fetches, implicit as well as explicit. if you wanna know what implicit and explicit fetching even mean, go peek at "ALGORITHM FETCHING" in crypto(7). iykyk π
EVP_set_default_properties stores the properties you hand it in the string propq among the EVP data that's been stored in the library context you pass as libctx β and heads up, NULL signifies the default library context β¨
and like... any previous default property for the specified library context? dropped. gone. not invited to the function anymore π
EVP_get1_default_properties() gets the default properties that are set for all future EVP algorithm fetches, implicit as well as explicit, for that specific library context π«Ά
EVP_default_properties_enable_fips() sets 'fips=yes' to be a default property if enable is non zero. otherwise it clears 'fips' from the default property query for the given libctx. and it merges the fips default property query with any existing query strings that have been set via EVP_set_default_properties(). teamwork makes the dream work, fr fr π
EVP_default_properties_is_fips_enabled() indicates if 'fips=yes' is a default property for the given libctx. it's the vibe check π
β NOTES β
EVP_set_default_properties()andEVP_default_properties_enable_fips()are not thread safe. they are intended to be called only during the initialisation phase of alibctx. so like, not a "call it from every thread whenever" situation, bestie π
EVP_get1_default_properties() is not thread safe either. the application must ensure that the context reference is valid and that default fetching properties are not being modified by a different thread. protect the peace π§
π RETURN VALUES π
EVP_set_default_properties() and EVP_default_properties_enable_fips() return 1 on success, or 0 on failure. and if a failure occurs, an error is placed on the error stack. we love a paper trail β¨
EVP_default_properties_is_fips_enabled() returns 1 if the 'fips=yes' default property is set for the given libctx, otherwise it returns 0.
EVP_get1_default_properties() returns allocated memory that must be freed by OPENSSL_free(3) on success, and NULL on failure. so yes, free it, don't just leave it there being a little memory leak gremlin π
π¦ SEE ALSO π¦
π HISTORY π
the functions EVP_set_default_properties(), EVP_default_properties_enable_fips(), and EVP_default_properties_is_fips_enabled() were added in OpenSSL 3.0 π
the function EVP_get1_default_properties() was added in OpenSSL 3.5 π
πΈ COPYRIGHT πΈ
Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.
and that's the whole page, bestie π
this version is 3.5.9, dated 2026-09-29, straight from the EVP_SET_DEFAULT_PROPERTIES(3ossl) manual β go set those defaults and slay β¨ππ
π¦ where this page comes from
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms