Skip to content

Commit ef4b7c0

Browse files
tgonzalezorlandoarmgowthamsk-arm
authored andcommitted
lib.rs: Expose Provider Parameter Names
Unify with testing. Change algorithm_names to fit the specification in: https://www.openssl.org/docs/manmaster/man3/OSSL_ALGORITHM.html Signed-off-by: Tomás González <tomasagustin.gonzalezorlando@arm.com>
1 parent c520462 commit ef4b7c0

File tree

4 files changed

+32
-16
lines changed

4 files changed

+32
-16
lines changed

parsec-openssl-provider-shared/e2e_tests/src/lib.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ pub use foreign_types_shared::ForeignType;
77
pub use parsec_openssl_provider::parsec_openssl2::openssl::{lib_ctx::LibCtx, provider::Provider};
88
pub use parsec_openssl_provider::parsec_openssl2::openssl_bindings::*;
99
use parsec_openssl_provider::parsec_openssl2::openssl_returns_1;
10-
11-
// These needs to be replaced with consts from the key management module
12-
pub const PARSEC_PROVIDER_RSA: &[u8; 4] = b"RSA\0";
13-
pub const PARSEC_PROVIDER_ECDSA: &[u8; 6] = b"ECDSA\0";
14-
pub const PARSEC_PROVIDER_PROPERTY: &[u8; 16] = b"provider=parsec\0";
10+
use parsec_openssl_provider::PARSEC_PROVIDER_DFLT_PROPERTIES;
1511

1612
// Loads a provider into the given library context
1713
pub fn load_provider(lib_ctx: &LibCtx, provider_name: &str, provider_path: String) -> Provider {
@@ -30,7 +26,7 @@ pub unsafe fn load_key(
3026
let evp_ctx: *mut EVP_PKEY_CTX = EVP_PKEY_CTX_new_from_name(
3127
lib_ctx.as_ptr() as *mut ossl_lib_ctx_st,
3228
key_type.as_ptr() as *const ::std::os::raw::c_char,
33-
PARSEC_PROVIDER_PROPERTY.as_ptr() as *const ::std::os::raw::c_char,
29+
PARSEC_PROVIDER_DFLT_PROPERTIES.as_ptr() as *const ::std::os::raw::c_char,
3430
);
3531
assert_ne!(evp_ctx, std::ptr::null_mut());
3632
openssl_returns_1(EVP_PKEY_fromdata_init(evp_ctx)).unwrap();

parsec-openssl-provider-shared/e2e_tests/tests/keys.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33

44
use e2e_tests::*;
55
use parsec_openssl_provider::parsec_openssl2::ossl_param;
6-
use parsec_openssl_provider::PARSEC_PROVIDER_KEY_NAME;
6+
use parsec_openssl_provider::{
7+
PARSEC_PROVIDER_ECDSA_NAME, PARSEC_PROVIDER_KEY_NAME, PARSEC_PROVIDER_RSA_NAME,
8+
};
79

810
// Loads RSA key from the provider
911
#[test]
@@ -19,7 +21,12 @@ fn test_loading_rsa_key() {
1921
let mut param = ossl_param!(PARSEC_PROVIDER_KEY_NAME, OSSL_PARAM_UTF8_PTR, key_name);
2022
unsafe {
2123
let mut parsec_pkey: *mut EVP_PKEY = std::ptr::null_mut();
22-
load_key(&lib_ctx, &mut param, &mut parsec_pkey, PARSEC_PROVIDER_RSA);
24+
load_key(
25+
&lib_ctx,
26+
&mut param,
27+
&mut parsec_pkey,
28+
PARSEC_PROVIDER_RSA_NAME,
29+
);
2330

2431
EVP_PKEY_free(parsec_pkey);
2532
}
@@ -43,7 +50,7 @@ fn test_loading_ecdsa_key() {
4350
&lib_ctx,
4451
&mut param,
4552
&mut parsec_pkey,
46-
PARSEC_PROVIDER_ECDSA,
53+
PARSEC_PROVIDER_ECDSA_NAME,
4754
);
4855

4956
EVP_PKEY_free(parsec_pkey);

parsec-openssl-provider-shared/e2e_tests/tests/sign.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ use parsec_client::core::basic_client::BasicClient;
66
use parsec_client::core::interface::operations::psa_algorithm::{AsymmetricSignature, Hash};
77
use parsec_openssl_provider::parsec_openssl2::ossl_param;
88
use parsec_openssl_provider::parsec_openssl2::{openssl_returns_1, Openssl2Error};
9-
use parsec_openssl_provider::PARSEC_PROVIDER_KEY_NAME;
9+
use parsec_openssl_provider::{
10+
PARSEC_PROVIDER_DFLT_PROPERTIES, PARSEC_PROVIDER_ECDSA_NAME, PARSEC_PROVIDER_KEY_NAME,
11+
PARSEC_PROVIDER_RSA_NAME,
12+
};
1013
use sha2::{Digest, Sha256};
1114

1215
// Signs a digest using Parsec Provider and verifies the signature using the
@@ -37,7 +40,7 @@ fn sign_verify(
3740
let evp_ctx: *mut EVP_PKEY_CTX = EVP_PKEY_CTX_new_from_pkey(
3841
lib_ctx.as_ptr() as *mut ossl_lib_ctx_st,
3942
parsec_pkey,
40-
PARSEC_PROVIDER_PROPERTY.as_ptr() as *const ::std::os::raw::c_char,
43+
PARSEC_PROVIDER_DFLT_PROPERTIES.as_ptr() as *const ::std::os::raw::c_char,
4144
);
4245

4346
let mut sign_len = signature.len();
@@ -76,7 +79,12 @@ fn test_signing_ecdsa() {
7679
hash_alg: Hash::Sha256.into(),
7780
};
7881

79-
let _ = sign_verify(&key_name, &mut signature, sign_alg, PARSEC_PROVIDER_ECDSA);
82+
let _ = sign_verify(
83+
&key_name,
84+
&mut signature,
85+
sign_alg,
86+
PARSEC_PROVIDER_ECDSA_NAME,
87+
);
8088
}
8189

8290
#[ignore]
@@ -91,5 +99,10 @@ fn test_signing_rsa() {
9199
hash_alg: Hash::Sha256.into(),
92100
};
93101

94-
let _ = sign_verify(&key_name, &mut signature, sign_alg, PARSEC_PROVIDER_RSA);
102+
let _ = sign_verify(
103+
&key_name,
104+
&mut signature,
105+
sign_alg,
106+
PARSEC_PROVIDER_RSA_NAME,
107+
);
95108
}

parsec-openssl-provider/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ mod catch;
2626
use catch::r#catch;
2727

2828
// Parameter names that Providers can define
29-
const PARSEC_PROVIDER_RSA_NAME: &[u8; 39] = b"RSA\0";
30-
const PARSEC_PROVIDER_ECDSA_NAME: &[u8; 36] = b"ECDSA\0";
29+
pub const PARSEC_PROVIDER_RSA_NAME: &[u8; 39] = b"RSA:rsaEncryption:1.2.840.113549.1.1.1\0";
30+
pub const PARSEC_PROVIDER_ECDSA_NAME: &[u8; 36] = b"EC:id-ecPublicKey:1.2.840.10045.2.1\0";
3131
const PARSEC_PROVIDER_DESCRIPTION_RSA: &[u8; 11] = b"Parsec RSA\0";
3232
const PARSEC_PROVIDER_DESCRIPTION_ECDSA: &[u8; 13] = b"Parsec ECDSA\0";
33-
const PARSEC_PROVIDER_DFLT_PROPERTIES: &[u8; 16] = b"provider=parsec\0";
33+
pub const PARSEC_PROVIDER_DFLT_PROPERTIES: &[u8; 16] = b"provider=parsec\0";
3434
pub const PARSEC_PROVIDER_KEY_NAME: &[u8; 25] = b"parsec_provider_key_name\0";
3535

3636
// The init function populates the dispatch table and returns a void pointer

0 commit comments

Comments
 (0)