--- /dev/null
+=pod
+
+=head1 NAME
+
+ossl_prov_util_nid_to_name
+- provider utility functions
+
+=head1 SYNOPSIS
+
+ #include "internal/providercommon.h"
+
+ const char *ossl_prov_util_nid_to_name(int nid);
+
+=head1 DESCRIPTION
+
+The ossl_prov_util_nid_to_name() returns the name of an algorithm given a NID
+in the B<nid> parameter. For the default and legacy providers it is equivalent
+to calling OBJ_nid2sn(). The FIPS provider does not have the object database
+code available to it (because that code relies on the ASN.1 code), so this
+function is a static lookup of all known FIPS algorithm NIDs.
+
+=head1 RETURN VALUES
+
+Returns a pointer to the algorithm name, or NULL on error.
+
+=head1 COPYRIGHT
+
+Copyright 2019 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
+L<https://www.openssl.org/source/license.html>.
+
+=cut
SUBDIRS=digests ciphers
SOURCE[../../libcrypto]=\
- provider_err.c
+ provider_err.c provlib.c
* https://www.openssl.org/source/license.html
*/
+#include <openssl/provider.h>
+
const OSSL_PROVIDER *FIPS_get_provider(OPENSSL_CTX *ctx);
+
+const char *ossl_prov_util_nid_to_name(int nid);
--- /dev/null
+/*
+ * Copyright 1995-2019 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
+ */
+
+#include <openssl/objects.h>
+#include "internal/providercommon.h"
+
+/*
+ * The FIPS provider has its own version of this in fipsprov.c because it does
+ * not have OBJ_nid2sn();
+ */
+const char *ossl_prov_util_nid_to_name(int nid)
+{
+ return OBJ_nid2sn(nid);
+}
+
return 1;
}
+/* FIPS specific version of the function of the same name in provlib.c */
+const char *ossl_prov_util_nid_to_name(int nid)
+{
+ /* We don't have OBJ_nid2n() in FIPS_MODE so we have an explicit list */
+
+ switch (nid) {
+ /* Digests */
+ case NID_sha1:
+ return "SHA224";
+ case NID_sha224:
+ return "SHA224";
+ case NID_sha256:
+ return "SHA256";
+ case NID_sha384:
+ return "SHA384";
+ case NID_sha512:
+ return "SHA512";
+ case NID_sha512_224:
+ return "SHA512-224";
+ case NID_sha512_256:
+ return "SHA512-256";
+ case NID_sha3_224:
+ return "SHA3-224";
+ case NID_sha3_256:
+ return "SHA3-256";
+ case NID_sha3_384:
+ return "SHA3-384";
+ case NID_sha3_512:
+ return "SHA3-512";
+
+ /* Ciphers */
+ case NID_aes_256_ecb:
+ return "AES-256-ECB";
+ case NID_aes_192_ecb:
+ return "AES-192-ECB";
+ case NID_aes_128_ecb:
+ return "AES-128-ECB";
+ case NID_aes_256_cbc:
+ return "AES-256-CBC";
+ case NID_aes_192_cbc:
+ return "AES-192-CBC";
+ case NID_aes_128_cbc:
+ return "AES-128-CBC";
+ case NID_aes_256_ctr:
+ return "AES-256-CTR";
+ case NID_aes_192_ctr:
+ return "AES-192-CTR";
+ case NID_aes_128_ctr:
+ return "AES-128-CTR";
+ }
+
+ return NULL;
+}
+
static const OSSL_ALGORITHM fips_digests[] = {
{ "SHA1", "fips=yes", sha1_functions },
{ "SHA224", "fips=yes", sha224_functions },