/*
- * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
s++;
}
if (*s == '\0') {
- ERR_raise_data(ERR_LIB_PROP, PROP_R_NO_MATCHING_STRING_DELIMETER,
+ ERR_raise_data(ERR_LIB_PROP, PROP_R_NO_MATCHING_STRING_DELIMITER,
"HERE-->%c%s", delim, *t);
return 0;
}
return query->has_optional ? 1 : 0;
}
+int ossl_property_is_enabled(OPENSSL_CTX *ctx, const char *property_name,
+ const OSSL_PROPERTY_LIST *prop_list)
+{
+ int i;
+ OSSL_PROPERTY_IDX name_id;
+ const PROPERTY_DEFINITION *prop = NULL;
+
+ if (prop_list == NULL)
+ return 0;
+
+ if (!parse_name(ctx, &property_name, 0, &name_id))
+ return 0;
+
+ prop = prop_list->properties;
+ for (i = 0; i < prop_list->n; ++i) {
+ if (prop[i].name_idx == name_id) {
+ /* Do a separate check for override as it does not set type */
+ if (prop[i].optional || prop[i].oper == PROPERTY_OVERRIDE)
+ return 0;
+ return (prop[i].type == PROPERTY_TYPE_STRING
+ && ((prop[i].oper == PROPERTY_OPER_EQ
+ && prop[i].v.str_val == ossl_property_true)
+ || (prop[i].oper == PROPERTY_OPER_NE
+ && prop[i].v.str_val != ossl_property_true)));
+ }
+ }
+ return 0;
+}
+
/*
* Compare a query against a definition.
* Return the number of clauses matched or -1 if a mandatory clause is false.
/*
* Handle the cases of a missing value and a query with no corresponding
- * definition. The former fails for any comparision except inequality,
+ * definition. The former fails for any comparison except inequality,
* the latter is treated as a comparison against the Boolean false.
*/
if (q[i].type == PROPERTY_TYPE_VALUE_UNDEFINED) {
int ossl_property_parse_init(OPENSSL_CTX *ctx)
{
static const char *const predefined_names[] = {
- "default", /* Being provided by the default built-in provider */
- "legacy", /* Provided by the legacy provider */
- "provider", /* Name of provider (default, fips) */
+ "provider", /* Name of provider (default, legacy, fips) */
"version", /* Version number of this provider */
- "fips", /* FIPS supporting provider */
- "engine", /* An old style engine masquerading as a provider */
+ "fips", /* FIPS validated or FIPS supporting algorithm */
+ "format", /* output format for serializers */
+ "type", /* output type for serializers */
};
size_t i;