Skip to content

Commit 7584db5

Browse files
authored
Merge pull request #482 from ionut-arm/ts-prov-all
Add TS provider to all-providers
2 parents 1b6a60f + 87bcc9a commit 7584db5

File tree

6 files changed

+95
-11
lines changed

6 files changed

+95
-11
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ pkcs11-provider = ["cryptoki", "picky-asn1-der", "picky-asn1", "picky-asn1-x509"
6767
tpm-provider = ["tss-esapi", "picky-asn1-der", "picky-asn1", "picky-asn1-x509", "hex"]
6868
cryptoauthlib-provider = ["rust-cryptoauthlib"]
6969
trusted-service-provider = ["psa-crypto", "bindgen", "prost-build", "prost"]
70-
all-providers = ["tpm-provider", "pkcs11-provider", "mbed-crypto-provider", "cryptoauthlib-provider"]
70+
all-providers = ["tpm-provider", "pkcs11-provider", "mbed-crypto-provider", "cryptoauthlib-provider", "trusted-service-provider"]
7171

7272
# Authenticators
7373
direct-authenticator = []

ci.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,8 @@ if [ "$PROVIDER_NAME" = "pkcs11" ] || [ "$PROVIDER_NAME" = "all" ] || [ "$PROVID
175175
popd
176176
fi
177177

178-
if [ "$PROVIDER_NAME" = "trusted-service" ] || [ "$PROVIDER_NAME" = "coverage" ]; then
179-
git submodule update --init
180-
fi
178+
# Initialising any submodules. Currently used for building the Trusted Service provider
179+
git submodule update --init
181180

182181
if [ "$PROVIDER_NAME" = "mbed-crypto" ]; then
183182
# With those variables defined, dynamic linking will be attempted to build the
@@ -276,9 +275,9 @@ if [ "$PROVIDER_NAME" = "cargo-check" ]; then
276275
RUST_BACKTRACE=1 cargo check --features="pkcs11-provider"
277276
RUST_BACKTRACE=1 cargo check --features="tpm-provider"
278277
RUST_BACKTRACE=1 cargo check --features="cryptoauthlib-provider"
279-
# To be added when trusted-service is added to all-providers feature
280-
#RUST_BACKTRACE=1 cargo check --features="trusted-service-provider"
278+
RUST_BACKTRACE=1 cargo check --features="trusted-service-provider"
281279
RUST_BACKTRACE=1 cargo check --features="all-providers"
280+
282281
RUST_BACKTRACE=1 cargo check --features="direct-authenticator"
283282
RUST_BACKTRACE=1 cargo check --features="unix-peer-credentials-authenticator"
284283
RUST_BACKTRACE=1 cargo check --features="jwt-svid-authenticator"

e2e_tests/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ tpm-provider = []
3333
pkcs11-provider = []
3434
cryptoauthlib-provider = []
3535
trusted-service-provider = []
36-
all-providers = ["pkcs11-provider","tpm-provider","mbed-crypto-provider","cryptoauthlib-provider"]
36+
all-providers = ["pkcs11-provider","tpm-provider","mbed-crypto-provider","cryptoauthlib-provider","trusted-service-provider"]

e2e_tests/tests/all_providers/config/mod.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,3 +250,52 @@ fn allow_export() {
250250
ResponseStatus::PsaErrorNotPermitted
251251
);
252252
}
253+
254+
#[test]
255+
fn ts_pkcs11_cross() {
256+
use super::cross::{import_and_verify, import_and_verify_ecc, setup_sign, setup_sign_ecc};
257+
use parsec_client::core::interface::requests::ProviderId;
258+
set_config("ts_pkcs11_cross.toml");
259+
reload_service();
260+
261+
let key_name = String::from("ts_pkcs11_sign_cross");
262+
let (mut client, pub_key, signature) = setup_sign(ProviderId::TrustedService, key_name.clone());
263+
import_and_verify(
264+
&mut client,
265+
ProviderId::Pkcs11,
266+
key_name.clone(),
267+
pub_key.clone(),
268+
signature.clone(),
269+
);
270+
271+
let key_name_ecc = String::from("ts_pkcs11_sign_cross_ecc");
272+
let (mut client, pub_key, signature) =
273+
setup_sign_ecc(ProviderId::TrustedService, key_name_ecc.clone());
274+
import_and_verify_ecc(
275+
&mut client,
276+
ProviderId::Pkcs11,
277+
key_name_ecc.clone(),
278+
pub_key.clone(),
279+
signature.clone(),
280+
);
281+
282+
let key_name = String::from("pkcs11_ts_sign_cross");
283+
let (mut client, pub_key, signature) = setup_sign(ProviderId::Pkcs11, key_name.clone());
284+
import_and_verify(
285+
&mut client,
286+
ProviderId::TrustedService,
287+
key_name.clone(),
288+
pub_key.clone(),
289+
signature.clone(),
290+
);
291+
292+
let key_name_ecc = String::from("pkcs11_ts_sign_cross_ecc");
293+
let (mut client, pub_key, signature) = setup_sign_ecc(ProviderId::Pkcs11, key_name_ecc.clone());
294+
import_and_verify_ecc(
295+
&mut client,
296+
ProviderId::TrustedService,
297+
key_name_ecc.clone(),
298+
pub_key.clone(),
299+
signature.clone(),
300+
);
301+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
[core_settings]
2+
# The CI already timestamps the logs
3+
log_timestamp = false
4+
log_error_details = true
5+
6+
# The container runs the Parsec service as root, so make sure we disable root
7+
# checks.
8+
allow_root = true
9+
10+
[listener]
11+
listener_type = "DomainSocket"
12+
# The timeout needs to be smaller than the test client timeout (five seconds) as it is testing
13+
# that the service does not hang for very big values of body or authentication length.
14+
timeout = 3000 # in milliseconds
15+
socket_path = "/tmp/parsec.sock"
16+
17+
[authenticator]
18+
auth_type = "Direct"
19+
20+
[[key_manager]]
21+
name = "on-disk-manager"
22+
manager_type = "OnDisk"
23+
store_path = "./mappings"
24+
25+
[[provider]]
26+
provider_type = "TrustedService"
27+
key_info_manager = "on-disk-manager"
28+
29+
[[provider]]
30+
provider_type = "Pkcs11"
31+
key_info_manager = "on-disk-manager"
32+
library_path = "/usr/local/lib/softhsm/libsofthsm2.so"
33+
user_pin = "123456"
34+
software_public_operations = true
35+
# The slot_number mandatory field is going to replace the following line with a valid number
36+
# slot_number

e2e_tests/tests/all_providers/cross.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const PLAINTEXT_MESSAGE: [u8; 32] = [
1313
0x94, 0x8E, 0x92, 0x50, 0x35, 0xC2, 0x8C, 0x5C, 0x3C, 0xCA, 0xFE, 0x18, 0xE8, 0x81, 0x37, 0x78,
1414
];
1515

16-
fn setup_sign(provider: ProviderId, key_name: String) -> (TestClient, Vec<u8>, Vec<u8>) {
16+
pub fn setup_sign(provider: ProviderId, key_name: String) -> (TestClient, Vec<u8>, Vec<u8>) {
1717
let mut client = TestClient::new();
1818
client.set_provider(provider);
1919
client.generate_rsa_sign_key(key_name.clone()).unwrap();
@@ -27,7 +27,7 @@ fn setup_sign(provider: ProviderId, key_name: String) -> (TestClient, Vec<u8>, V
2727
(client, pub_key, signature)
2828
}
2929

30-
fn setup_sign_ecc(provider: ProviderId, key_name: String) -> (TestClient, Vec<u8>, Vec<u8>) {
30+
pub fn setup_sign_ecc(provider: ProviderId, key_name: String) -> (TestClient, Vec<u8>, Vec<u8>) {
3131
let mut client = TestClient::new();
3232
client.set_provider(provider);
3333
client
@@ -55,7 +55,7 @@ fn setup_asym_encr(provider: ProviderId, key_name: String) -> (TestClient, Vec<u
5555
(client, pub_key)
5656
}
5757

58-
fn import_and_verify(
58+
pub fn import_and_verify(
5959
client: &mut TestClient,
6060
provider: ProviderId,
6161
key_name: String,
@@ -71,7 +71,7 @@ fn import_and_verify(
7171
.unwrap();
7272
}
7373

74-
fn import_and_verify_ecc(
74+
pub fn import_and_verify_ecc(
7575
client: &mut TestClient,
7676
provider: ProviderId,
7777
key_name: String,

0 commit comments

Comments
 (0)