Skip to content

Commit 4e75a16

Browse files
keymgmt: Add OSSL_FUNC_KEYMGMT_IMPORT
Signed-off-by: Tomás González <tomasagustin.gonzalezorlando@arm.com>
1 parent 0fd1562 commit 4e75a16

File tree

2 files changed

+21
-4
lines changed
  • parsec-openssl-provider/src/keymgmt
  • parsec-openssl-sys2/src/c

2 files changed

+21
-4
lines changed

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

Lines changed: 20 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::ParsecProviderContext;
1010
use parsec_openssl2::types::VOID_PTR;
@@ -99,21 +99,37 @@ pub unsafe extern "C" fn parsec_provider_kmgmt_set_params(
9999
}
100100
}
101101

102+
pub unsafe extern "C" fn parsec_provider_kmgmt_import(
103+
key_data: VOID_PTR,
104+
selection: std::os::raw::c_int,
105+
params: *mut OSSL_PARAM,
106+
) -> std::os::raw::c_int {
107+
if selection & OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS as std::os::raw::c_int != 0 {
108+
return parsec_provider_kmgmt_set_params(key_data, params);
109+
}
110+
111+
1
112+
}
113+
102114
pub type KeyMgmtNewPtr = unsafe extern "C" fn(VOID_PTR) -> VOID_PTR;
103115
pub type KeyMgmtFreePtr = unsafe extern "C" fn(VOID_PTR);
116+
pub type KeyMgmtImportPtr =
117+
unsafe extern "C" fn(VOID_PTR, std::os::raw::c_int, *mut OSSL_PARAM) -> std::os::raw::c_int;
104118
pub type KeyMgmtSetParamsPtr =
105119
unsafe extern "C" fn(VOID_PTR, *mut OSSL_PARAM) -> std::os::raw::c_int;
106120
pub type KeyMgmtSettableParamsPtr = unsafe extern "C" fn(VOID_PTR) -> *const OSSL_PARAM;
107121

108122
const OSSL_FUNC_KEYMGMT_NEW_PTR: KeyMgmtNewPtr = parsec_provider_kmgmt_new;
109123
const OSSL_FUNC_KEYMGMT_FREE_PTR: KeyMgmtFreePtr = parsec_provider_kmgmt_free;
124+
const OSSL_FUNC_KEYMGMT_IMPORT_PTR: KeyMgmtImportPtr = parsec_provider_kmgmt_import;
110125
const OSSL_FUNC_KEYMGMT_SET_PARAMS_PTR: KeyMgmtSetParamsPtr = parsec_provider_kmgmt_set_params;
111126
const OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS_PTR: KeyMgmtSettableParamsPtr =
112127
parsec_provider_kmgmt_settable_params;
113128

114-
const PARSEC_PROVIDER_RSA_KEYMGMT_IMPL: [OSSL_DISPATCH; 4] = [
129+
const PARSEC_PROVIDER_RSA_KEYMGMT_IMPL: [OSSL_DISPATCH; 5] = [
115130
unsafe { ossl_dispatch!(OSSL_FUNC_KEYMGMT_NEW, OSSL_FUNC_KEYMGMT_NEW_PTR) },
116131
unsafe { ossl_dispatch!(OSSL_FUNC_KEYMGMT_FREE, OSSL_FUNC_KEYMGMT_FREE_PTR) },
132+
unsafe { ossl_dispatch!(OSSL_FUNC_KEYMGMT_IMPORT, OSSL_FUNC_KEYMGMT_IMPORT_PTR) },
117133
unsafe {
118134
ossl_dispatch!(
119135
OSSL_FUNC_KEYMGMT_SET_PARAMS,

parsec-openssl-sys2/src/c/openssl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
# define OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS 0x80
2626

2727
/* Import and export functions, with discovery */
28+
#define OSSL_FUNC_KEYMGMT_IMPORT 40
2829
#define OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS 12
2930
#define OSSL_FUNC_KEYMGMT_SET_PARAMS 13
3031
#define OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS 14

0 commit comments

Comments
 (0)