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/core_names.h>
11 #include <openssl/params.h>
12 #include "ciphers_locl.h"
13 #include "internal/provider_algs.h"
14 #include "internal/providercommonerr.h"
17 * Default cipher functions for OSSL_PARAM gettables and settables
19 static const OSSL_PARAM cipher_known_gettable_params
[] = {
20 OSSL_PARAM_int(OSSL_CIPHER_PARAM_MODE
, NULL
),
21 OSSL_PARAM_int(OSSL_CIPHER_PARAM_KEYLEN
, NULL
),
22 OSSL_PARAM_int(OSSL_CIPHER_PARAM_IVLEN
, NULL
),
23 OSSL_PARAM_int(OSSL_CIPHER_PARAM_BLOCK_SIZE
, NULL
),
26 const OSSL_PARAM
*cipher_default_gettable_params(void)
28 return cipher_known_gettable_params
;
31 int cipher_default_get_params(OSSL_PARAM params
[], int md
, unsigned long flags
,
32 int kbits
, int blkbits
, int ivbits
)
36 p
= OSSL_PARAM_locate(params
, OSSL_CIPHER_PARAM_MODE
);
37 if (p
!= NULL
&& !OSSL_PARAM_set_int(p
, md
)) {
38 ERR_raise(ERR_LIB_PROV
, PROV_R_FAILED_TO_SET_PARAMETER
);
41 p
= OSSL_PARAM_locate(params
, OSSL_CIPHER_PARAM_FLAGS
);
42 if (p
!= NULL
&& !OSSL_PARAM_set_ulong(p
, flags
)) {
43 ERR_raise(ERR_LIB_PROV
, PROV_R_FAILED_TO_SET_PARAMETER
);
46 p
= OSSL_PARAM_locate(params
, OSSL_CIPHER_PARAM_KEYLEN
);
47 if (p
!= NULL
&& !OSSL_PARAM_set_int(p
, kbits
/ 8)) {
48 ERR_raise(ERR_LIB_PROV
, PROV_R_FAILED_TO_SET_PARAMETER
);
51 p
= OSSL_PARAM_locate(params
, OSSL_CIPHER_PARAM_BLOCK_SIZE
);
52 if (p
!= NULL
&& !OSSL_PARAM_set_int(p
, blkbits
/ 8)) {
53 ERR_raise(ERR_LIB_PROV
, PROV_R_FAILED_TO_SET_PARAMETER
);
56 p
= OSSL_PARAM_locate(params
, OSSL_CIPHER_PARAM_IVLEN
);
57 if (p
!= NULL
&& !OSSL_PARAM_set_int(p
, ivbits
/ 8)) {
58 ERR_raise(ERR_LIB_PROV
, PROV_R_FAILED_TO_SET_PARAMETER
);
64 static const OSSL_PARAM cipher_known_gettable_ctx_params
[] = {
65 OSSL_PARAM_int(OSSL_CIPHER_PARAM_KEYLEN
, NULL
),
66 OSSL_PARAM_int(OSSL_CIPHER_PARAM_IVLEN
, NULL
),
67 OSSL_PARAM_int(OSSL_CIPHER_PARAM_PADDING
, NULL
),
68 OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_NUM
, NULL
),
69 OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_IV
, NULL
, 0),
72 const OSSL_PARAM
*cipher_default_gettable_ctx_params(void)
74 return cipher_known_gettable_ctx_params
;
77 static const OSSL_PARAM cipher_known_settable_ctx_params
[] = {
78 OSSL_PARAM_int(OSSL_CIPHER_PARAM_KEYLEN
, NULL
),
79 OSSL_PARAM_int(OSSL_CIPHER_PARAM_PADDING
, NULL
),
80 OSSL_PARAM_int(OSSL_CIPHER_PARAM_NUM
, NULL
),
83 const OSSL_PARAM
*cipher_default_settable_ctx_params(void)
85 return cipher_known_settable_ctx_params
;
89 * AEAD cipher functions for OSSL_PARAM gettables and settables
91 static const OSSL_PARAM cipher_aead_known_gettable_ctx_params
[] = {
92 OSSL_PARAM_int(OSSL_CIPHER_PARAM_KEYLEN
, NULL
),
93 OSSL_PARAM_int(OSSL_CIPHER_PARAM_IVLEN
, NULL
),
94 OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_IV
, NULL
, 0),
95 OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TAG
, NULL
, 0),
96 OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD
, NULL
),
99 const OSSL_PARAM
*cipher_aead_gettable_ctx_params(void)
101 return cipher_aead_known_gettable_ctx_params
;
104 static const OSSL_PARAM cipher_aead_known_settable_ctx_params
[] = {
105 OSSL_PARAM_int(OSSL_CIPHER_PARAM_KEYLEN
, NULL
),
106 OSSL_PARAM_size_t(OSSL_CIPHER_PARAM_AEAD_IVLEN
, NULL
),
107 OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TAG
, NULL
, 0),
108 OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TLS1_AAD
, NULL
, 0),
109 OSSL_PARAM_octet_string(OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED
, NULL
, 0),
112 const OSSL_PARAM
*cipher_aead_settable_ctx_params(void)
114 return cipher_aead_known_settable_ctx_params
;