### Changes between 3.2 and 3.3 [xx XXX xxxx]
+ * The activate configuration setting for providers in openssl.cnf has been
+ updated to require a value of [1|yes|true|on] (in lower or UPPER case) to
+ activate the provider. Conversely a setting [0|no|false|off] will prevent
+ provider activation. All other values, or the omission of a value for this
+ setting will result in an error.
+
+ *Neil Horman*
+
* In `openssl speed`, changed the default hash function used with `hmac` from
`md5` to `sha256`.
/* First handle some special pseudo confs */
/* Override provider name to use */
- if (strcmp(confname, "identity") == 0)
+ if (strcmp(confname, "identity") == 0) {
name = confvalue;
- else if (strcmp(confname, "soft_load") == 0)
+ } else if (strcmp(confname, "soft_load") == 0) {
soft = 1;
/* Load a dynamic PROVIDER */
- else if (strcmp(confname, "module") == 0)
+ } else if (strcmp(confname, "module") == 0) {
path = confvalue;
- else if (strcmp(confname, "activate") == 0)
- activate = 1;
+ } else if (strcmp(confname, "activate") == 0) {
+ if (confvalue == NULL) {
+ ERR_raise_data(ERR_LIB_CRYPTO, CRYPTO_R_PROVIDER_SECTION_ERROR,
+ "section=%s activate set to unrecognized value",
+ value);
+ return 0;
+ }
+ if ((strcmp(confvalue, "1") == 0)
+ || (strcmp(confvalue, "yes") == 0)
+ || (strcmp(confvalue, "YES") == 0)
+ || (strcmp(confvalue, "true") == 0)
+ || (strcmp(confvalue, "TRUE") == 0)
+ || (strcmp(confvalue, "on") == 0)
+ || (strcmp(confvalue, "ON") == 0)) {
+ activate = 1;
+ } else if ((strcmp(confvalue, "0") == 0)
+ || (strcmp(confvalue, "no") == 0)
+ || (strcmp(confvalue, "NO") == 0)
+ || (strcmp(confvalue, "false") == 0)
+ || (strcmp(confvalue, "FALSE") == 0)
+ || (strcmp(confvalue, "off") == 0)
+ || (strcmp(confvalue, "OFF") == 0)) {
+ activate = 0;
+ } else {
+ ERR_raise_data(ERR_LIB_CRYPTO, CRYPTO_R_PROVIDER_SECTION_ERROR,
+ "section=%s activate set to unrecognized value",
+ value);
+ return 0;
+ }
+ }
}
if (activate) {
=item B<activate>
-If present, the module is activated. The value assigned to this name is not
-significant.
+If present and set to one of the values yes, on, true or 1, then the associated
+provider will be activated. Conversely, setting this value to no, off, false, or
+0 will prevent the provider from being activated. Settings can be given in lower
+or uppercase. Setting activate to any other setting, or omitting a setting
+value will result in an error.
=back
}
}
+static int test_legacy_provider_unloaded(void)
+{
+ OSSL_LIB_CTX *ctx = NULL;
+ int rc = 0;
+
+ ctx = OSSL_LIB_CTX_new();
+ if (!TEST_ptr(ctx))
+ goto err;
+
+ if (!TEST_true(OSSL_LIB_CTX_load_config(ctx, config_file)))
+ goto err;
+
+ if (!TEST_int_eq(OSSL_PROVIDER_available(ctx, "legacy"), 0))
+ goto err;
+
+ rc = 1;
+err:
+ OSSL_LIB_CTX_free(ctx);
+ return rc;
+}
+
static X509_ALGOR *make_algor(int nid)
{
X509_ALGOR *algor;
return 0;
}
}
+ ADD_TEST(test_legacy_provider_unloaded);
if (strcmp(alg, "digest") == 0) {
ADD_TEST(test_implicit_EVP_MD_fetch);
ADD_TEST(test_explicit_EVP_MD_fetch_by_name);