Skip to content

Commit 07dbcf0

Browse files
tgonzalezorlandoarmgowthamsk-arm
authored andcommitted
keymgmt: Add OSSL_FUNC_KEYMGMT_IMPORT
Signed-off-by: Tomás González <tomasagustin.gonzalezorlando@arm.com>
1 parent 1a48fb4 commit 07dbcf0

File tree

1 file changed

+22
-4
lines changed
  • parsec-openssl-provider/src/keymgmt

1 file changed

+22
-4
lines changed

parsec-openssl-provider/src/keymgmt/mod.rs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
use crate::openssl_binding::{
5-
OSSL_ALGORITHM, OSSL_DISPATCH, OSSL_FUNC_KEYMGMT_FREE, OSSL_FUNC_KEYMGMT_NEW,
6-
OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS, OSSL_FUNC_KEYMGMT_SET_PARAMS, OSSL_PARAM,
7-
OSSL_PARAM_UTF8_PTR,
5+
OSSL_ALGORITHM, OSSL_DISPATCH, OSSL_FUNC_KEYMGMT_FREE, OSSL_FUNC_KEYMGMT_IMPORT,
6+
OSSL_FUNC_KEYMGMT_NEW, OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS, OSSL_FUNC_KEYMGMT_SET_PARAMS,
7+
OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS, OSSL_PARAM, OSSL_PARAM_UTF8_PTR,
88
};
99
use crate::{
1010
ParsecProviderContext, PARSEC_PROVIDER_DESCRIPTION_RSA, PARSEC_PROVIDER_DFLT_PROPERTIES,
@@ -109,21 +109,39 @@ pub unsafe extern "C" fn parsec_provider_kmgmt_set_params(
109109
}
110110
}
111111

112+
pub unsafe extern "C" fn parsec_provider_kmgmt_import(
113+
key_data: VOID_PTR,
114+
selection: std::os::raw::c_int,
115+
params: *mut OSSL_PARAM,
116+
) -> std::os::raw::c_int {
117+
//TODO: Query the parsec service and get a list of keys, check if the requested import is for a known key and then
118+
// set the parameter
119+
if selection & OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS as std::os::raw::c_int != 0 {
120+
return parsec_provider_kmgmt_set_params(key_data, params);
121+
}
122+
123+
OPENSSL_SUCCESS
124+
}
125+
112126
pub type KeyMgmtNewPtr = unsafe extern "C" fn(VOID_PTR) -> VOID_PTR;
113127
pub type KeyMgmtFreePtr = unsafe extern "C" fn(VOID_PTR);
128+
pub type KeyMgmtImportPtr =
129+
unsafe extern "C" fn(VOID_PTR, std::os::raw::c_int, *mut OSSL_PARAM) -> std::os::raw::c_int;
114130
pub type KeyMgmtSetParamsPtr =
115131
unsafe extern "C" fn(VOID_PTR, *mut OSSL_PARAM) -> std::os::raw::c_int;
116132
pub type KeyMgmtSettableParamsPtr = unsafe extern "C" fn(VOID_PTR) -> *const OSSL_PARAM;
117133

118134
const OSSL_FUNC_KEYMGMT_NEW_PTR: KeyMgmtNewPtr = parsec_provider_kmgmt_new;
119135
const OSSL_FUNC_KEYMGMT_FREE_PTR: KeyMgmtFreePtr = parsec_provider_kmgmt_free;
136+
const OSSL_FUNC_KEYMGMT_IMPORT_PTR: KeyMgmtImportPtr = parsec_provider_kmgmt_import;
120137
const OSSL_FUNC_KEYMGMT_SET_PARAMS_PTR: KeyMgmtSetParamsPtr = parsec_provider_kmgmt_set_params;
121138
const OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS_PTR: KeyMgmtSettableParamsPtr =
122139
parsec_provider_kmgmt_settable_params;
123140

124-
const PARSEC_PROVIDER_RSA_KEYMGMT_IMPL: [OSSL_DISPATCH; 5] = [
141+
const PARSEC_PROVIDER_RSA_KEYMGMT_IMPL: [OSSL_DISPATCH; 6] = [
125142
unsafe { ossl_dispatch!(OSSL_FUNC_KEYMGMT_NEW, OSSL_FUNC_KEYMGMT_NEW_PTR) },
126143
unsafe { ossl_dispatch!(OSSL_FUNC_KEYMGMT_FREE, OSSL_FUNC_KEYMGMT_FREE_PTR) },
144+
unsafe { ossl_dispatch!(OSSL_FUNC_KEYMGMT_IMPORT, OSSL_FUNC_KEYMGMT_IMPORT_PTR) },
127145
unsafe {
128146
ossl_dispatch!(
129147
OSSL_FUNC_KEYMGMT_SET_PARAMS,

0 commit comments

Comments
 (0)