info > provider(7)

Not found locally for provider. Try Google search

PROVIDER(7SSL) OpenSSL PROVIDER(7SSL)

📛 NAME

provider - OpenSSL operation implementation providers

🚀 Quick Reference

Use CaseCommand / FunctionDescription
🔧 Initialize a provider (dynamic module) int OSSL_provider_init(const OSSL_CORE_HANDLE *handle, const OSSL_DISPATCH *in, const OSSL_DISPATCH **out, void **provctx) Entry point for dynamically loaded providers; must be exported as "OSSL_provider_init"
🔍 Query algorithm implementations const OSSL_ALGORITHM *provider_query_operation(void *provctx, int operation_id, const int *no_store) Central mechanism for OpenSSL to get access to operation implementations
đŸ“Ļ Return dispatch array with base functions *out = &dispatch_table Provider must assign an OSSL_DISPATCH array of base functions it offers

📋 SYNOPSIS

#include <openssl/provider.h>

📖 DESCRIPTION

🧩 General

This page contains information useful to provider authors.

A provider, in OpenSSL terms, is a unit of code that provides one or more implementations for various operations for diverse algorithms that one might want to perform.

An operation is something one wants to do, such as encryption and decryption, key derivation, MAC calculation, signing and verification, etc.

An algorithm is a named method to perform an operation. Very often, the algorithms revolve around cryptographic operations, but may also revolve around other types of operation, such as managing certain types of objects.

See crypto(7) for further details.

🏭 Provider

A provider offers an initialization function, as a set of base functions in the form of an OSSL_DISPATCH array, and by extension, a set of OSSL_ALGORITHMs (see openssl-core.h(7)). It may be a dynamically loadable module, or may be built-in, in OpenSSL libraries or in the application. If it's a dynamically loadable module, the initialization function must be named "OSSL_provider_init" and must be exported. If it's built-in, the initialization function may have any name.

The initialization function must have the following signature:

int NAME(const OSSL_CORE_HANDLE *handle,
         const OSSL_DISPATCH *in, const OSSL_DISPATCH **out,
         void **provctx);

Note that the provider will not be made available for applications to use until the initialization function has completed and returned successfully.

One of the functions the provider offers to the OpenSSL libraries is the central mechanism for the OpenSSL libraries to get access to operation implementations for diverse algorithms. Its referred to with the number OSSL_FUNC_PROVIDER_QUERY_OPERATION and has the following signature:

const OSSL_ALGORITHM *provider_query_operation(void *provctx,
                                               int operation_id,
                                               const int *no_store);

The returned OSSL_ALGORITHM is the foundation of any OpenSSL library API that uses providers for their implementation, most commonly in the fetching type of functions (see "ALGORITHM FETCHING" in crypto(7)).

âš™ī¸ Operations

Operations are referred to with numbers, via macros with names starting with "OSSL_OP_".

With each operation comes a set of defined function types that a provider may or may not offer, depending on its needs.

Currently available operations are:

đŸˇī¸ Algorithm naming

Algorithm names are case insensitive. Any particular algorithm can have multiple aliases associated with it. The canonical OpenSSL naming scheme follows this format:

ALGNAME[VERSION?][-SUBNAME[VERSION?]?][-SIZE?][-MODE?]

Other aliases may exist for example where standards bodies or common practice use alternative names or names that OpenSSL has used historically.

đŸ›ī¸ OPENSSL PROVIDERS

OpenSSL provides a number of its own providers. These are the default, base, fips, legacy and null providers. See crypto(7) for an overview of these providers.

🔗 SEE ALSO

📜 HISTORY

The concept of providers and everything surrounding them was introduced in OpenSSL 3.0.

ÂŠī¸ 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>.

provider(7)
📛 NAME 🚀 Quick Reference 📋 SYNOPSIS 📖 DESCRIPTION
🧩 General 🏭 Provider âš™ī¸ Operations đŸˇī¸ Algorithm naming
đŸ›ī¸ OPENSSL PROVIDERS 🔗 SEE ALSO 📜 HISTORY ÂŠī¸ COPYRIGHT

Generated by phpman v4.10.0-16-g1a0e228 Author: Che Dong Under GNU General Public License
2026-09-22 04:51 @216.73.216.44
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!