]>
git.ipfire.org Git - thirdparty/openssl.git/blob - providers/common/include/internal/provider_util.h
9fe21c5ef6092c90ce078bba7fd7074253c3ecd8
2 * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
10 #include <openssl/provider.h>
11 #include <openssl/engine.h>
15 * References to the underlying cipher implementation. |cipher| caches
16 * the cipher, always. |alloc_cipher| only holds a reference to an
17 * explicitly fetched cipher.
19 const EVP_CIPHER
*cipher
; /* cipher */
20 EVP_CIPHER
*alloc_cipher
; /* fetched cipher */
22 /* Conditions for legacy EVP_CIPHER uses */
23 ENGINE
*engine
; /* cipher engine */
25 /* Name this was fetched by */
26 char name
[51]; /* A longer name would be unexpected */
31 * References to the underlying digest implementation. |md| caches
32 * the digest, always. |alloc_md| only holds a reference to an explicitly
35 const EVP_MD
*md
; /* digest */
36 EVP_MD
*alloc_md
; /* fetched digest */
38 /* Conditions for legacy EVP_MD uses */
39 ENGINE
*engine
; /* digest engine */
41 /* Name this was fetched by */
42 char name
[51]; /* A longer name would be unexpected */
45 /* Cipher functions */
47 * Load a cipher from the specified parameters with the specified context.
48 * The params "properties", "engine" and "cipher" are used to determine the
49 * implementation used. If a provider cannot be found, it falls back to trying
50 * non-provider based implementations.
52 int ossl_prov_cipher_load_from_params(PROV_CIPHER
*pc
,
53 const OSSL_PARAM params
[],
56 /* Reset the PROV_CIPHER fields and free any allocated cipher reference */
57 void ossl_prov_cipher_reset(PROV_CIPHER
*pc
);
59 /* Clone a PROV_CIPHER structure into a second */
60 int ossl_prov_cipher_copy(PROV_CIPHER
*dst
, const PROV_CIPHER
*src
);
62 /* Query the cipher and associated engine (if any) */
63 const EVP_CIPHER
*ossl_prov_cipher_cipher(const PROV_CIPHER
*pc
);
64 ENGINE
*ossl_prov_cipher_engine(const PROV_CIPHER
*pc
);
65 const char *ossl_prov_cipher_name(const PROV_CIPHER
*pc
);
67 /* Digest functions */
69 * Load a digest from the specified parameters with the specified context.
70 * The params "properties", "engine" and "digest" are used to determine the
71 * implementation used. If a provider cannot be found, it falls back to trying
72 * non-provider based implementations.
74 int ossl_prov_digest_load_from_params(PROV_DIGEST
*pd
,
75 const OSSL_PARAM params
[],
78 /* Reset the PROV_DIGEST fields and free any allocated digest reference */
79 void ossl_prov_digest_reset(PROV_DIGEST
*pd
);
81 /* Clone a PROV_DIGEST structure into a second */
82 int ossl_prov_digest_copy(PROV_DIGEST
*dst
, const PROV_DIGEST
*src
);
84 /* Query the digest and associated engine (if any) */
85 const EVP_MD
*ossl_prov_digest_md(const PROV_DIGEST
*pd
);
86 ENGINE
*ossl_prov_digest_engine(const PROV_DIGEST
*pd
);
87 const char *ossl_prov_digest_name(const PROV_DIGEST
*pd
);