Skip to content

Commit e1ab2b7

Browse files
committed
Tweaks to pass CI tests
Signed-off-by: Samuel Bailey <samuel.bailey@arm.com>
1 parent 683f52d commit e1ab2b7

File tree

7 files changed

+42
-47
lines changed

7 files changed

+42
-47
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#![allow(clippy::multiple_crate_versions)]
2+
3+
fn main() {}

src/providers/mbed_provider/asym_sign.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ use crate::key_info_managers::KeyTriple;
77
use log::{error, info};
88
use parsec_interface::operations::{psa_sign_hash, psa_verify_hash};
99
use parsec_interface::requests::{ProviderID, ResponseStatus, Result};
10-
use psa_crypto::operations::key_management as new_key_management;
1110
use psa_crypto::operations::asym_signature;
1211
use psa_crypto::types::key;
1312

14-
#[allow(unused)]
1513
impl MbedProvider {
1614
pub(super) fn psa_sign_hash_internal(
1715
&self,
@@ -38,20 +36,17 @@ impl MbedProvider {
3836
// * self.key_slot_semaphore prevents overflowing key slots
3937

4038
let id = key::Id::from_persistent_key_id(key_id);
41-
let key_attributes = new_key_management::get_key_attributes(id)?;
39+
let key_attributes = key::Attributes::from_key_id(id)?;
4240
let buffer_size = utils::psa_asymmetric_sign_output_size(&key_attributes)?;
4341
let mut signature = vec![0u8; buffer_size];
44-
let mut signature_size = 0;
4542

46-
match asym_signature::sign_hash(id, alg, &hash, &mut signature)
47-
{
43+
match asym_signature::sign_hash(id, alg, &hash, &mut signature) {
4844
Ok(size) => {
4945
let mut res = psa_sign_hash::Result {
5046
signature: Vec::new(),
5147
};
5248
res.signature.resize(size, 0);
53-
res.signature
54-
.copy_from_slice(&signature[0..size]);
49+
res.signature.copy_from_slice(&signature[0..size]);
5550
Ok(res)
5651
}
5752
Err(error) => {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Copyright 2019 Contributors to the Parsec project.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
pub use super::key::{psa_key_id_t, PSA_KEY_ID_USER_MAX, PSA_KEY_ID_USER_MIN};
5+
6+
pub const PSA_KEY_SLOT_COUNT: isize = 32;

src/providers/mbed_provider/key_management.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Copyright 2020 Contributors to the Parsec project.
22
// SPDX-License-Identifier: Apache-2.0
3-
use super::utils;
3+
use super::{constants, utils};
44
use super::{LocalIdStore, MbedProvider};
55
use crate::authenticators::ApplicationName;
66
use crate::key_info_managers;
@@ -20,7 +20,7 @@ use psa_crypto::types::key;
2020
pub fn get_key_id(
2121
key_triple: &KeyTriple,
2222
store_handle: &dyn ManageKeyInfo,
23-
) -> Result<key::key_id_type> {
23+
) -> Result<key::psa_key_id_t> {
2424
match store_handle.get(key_triple) {
2525
Ok(Some(key_info)) => {
2626
if key_info.id.len() == 4 {
@@ -43,13 +43,13 @@ fn create_key_id(
4343
key_attributes: Attributes,
4444
store_handle: &mut dyn ManageKeyInfo,
4545
local_ids_handle: &mut LocalIdStore,
46-
) -> Result<key::key_id_type> {
47-
let mut key_id = rand::random::<key::key_id_type>();
46+
) -> Result<key::psa_key_id_t> {
47+
let mut key_id = rand::random::<key::psa_key_id_t>();
4848
while local_ids_handle.contains(&key_id)
49-
|| key_id == 0
50-
|| key_id > key::PSA_MAX_PERSISTENT_KEY_IDENTIFIER
49+
|| key_id < constants::PSA_KEY_ID_USER_MIN
50+
|| key_id > constants::PSA_KEY_ID_USER_MAX
5151
{
52-
key_id = rand::random::<key::key_id_type>();
52+
key_id = rand::random::<key::psa_key_id_t>();
5353
}
5454
let key_info = KeyInfo {
5555
id: key_id.to_ne_bytes().to_vec(),
@@ -70,7 +70,7 @@ fn create_key_id(
7070

7171
fn remove_key_id(
7272
key_triple: &KeyTriple,
73-
key_id: key::key_id_type,
73+
key_id: key::psa_key_id_t,
7474
store_handle: &mut dyn ManageKeyInfo,
7575
local_ids_handle: &mut LocalIdStore,
7676
) -> Result<()> {
@@ -213,7 +213,7 @@ impl MbedProvider {
213213
// * self.key_handle_mutex prevents concurrent accesses
214214
// * self.key_slot_semaphore prevents overflowing key slots
215215
let id = key::Id::from_persistent_key_id(key_id);
216-
let key_attributes = new_key_management::get_key_attributes(id)?;
216+
let key_attributes = key::Attributes::from_key_id(id)?;
217217
let buffer_size = utils::psa_export_public_key_size(&key_attributes)?;
218218
let mut buffer = vec![0u8; buffer_size];
219219

@@ -251,18 +251,20 @@ impl MbedProvider {
251251
// * self.key_handle_mutex prevents concurrent accesses
252252
// * self.key_slot_semaphore prevents overflowing key slots
253253
let id = key::Id::from_persistent_key_id(key_id);
254-
unsafe { destroy_key_status = new_key_management::destroy(id); }
254+
unsafe {
255+
destroy_key_status = new_key_management::destroy(id);
256+
}
255257

256258
match destroy_key_status {
257259
Ok(()) => {
258260
remove_key_id(
259-
&key_triple,
260-
key_id,
261-
&mut *store_handle,
262-
&mut local_ids_handle,
261+
&key_triple,
262+
key_id,
263+
&mut *store_handle,
264+
&mut local_ids_handle,
263265
)?;
264266
Ok(psa_destroy_key::Result {})
265-
},
267+
}
266268
Err(error) => {
267269
let error = ResponseStatus::from(error);
268270
error!("Destroy key status: {}", error);

src/providers/mbed_provider/mod.rs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ use parsec_interface::operations::{
1010
psa_destroy_key, psa_export_public_key, psa_generate_key, psa_import_key, psa_sign_hash,
1111
psa_verify_hash,
1212
};
13-
use psa_crypto::types::{status, key};
1413
use parsec_interface::requests::{Opcode, ProviderID, ResponseStatus, Result};
14+
use psa_crypto::types::{key, status};
1515
use std::collections::HashSet;
1616
use std::io::{Error, ErrorKind};
1717
use std::sync::{Arc, Mutex, RwLock};
@@ -26,13 +26,13 @@ use uuid::Uuid;
2626
trivial_casts
2727
)]
2828
#[allow(clippy::all)]
29-
3029
mod asym_sign;
3130
#[allow(dead_code)]
31+
mod constants;
3232
mod key_management;
3333
mod utils;
3434

35-
type LocalIdStore = HashSet<key::key_id_type>;
35+
type LocalIdStore = HashSet<key::psa_key_id_t>;
3636

3737
const SUPPORTED_OPCODES: [Opcode; 6] = [
3838
Opcode::PsaGenerateKey,
@@ -82,7 +82,7 @@ impl MbedProvider {
8282
key_info_store,
8383
local_ids: RwLock::new(HashSet::new()),
8484
key_handle_mutex: Mutex::new(()),
85-
key_slot_semaphore: Semaphore::new(key::PSA_KEY_SLOT_COUNT),
85+
key_slot_semaphore: Semaphore::new(constants::PSA_KEY_SLOT_COUNT),
8686
};
8787
{
8888
// The local scope allows to drop store_handle and local_ids_handle in order to return
@@ -120,13 +120,11 @@ impl MbedProvider {
120120
// * the Mbed Crypto library has been initialized
121121
// * this code is executed only by the main thread
122122
let pc_key_id = key::Id::from_persistent_key_id(key_id);
123-
match psa_crypto::operations::key_management::get_key_attributes(pc_key_id) {
123+
match key::Attributes::from_key_id(pc_key_id) {
124124
Ok(_) => {
125125
let _ = local_ids_handle.insert(key_id);
126126
}
127-
Err(status::Error::DoesNotExist) => {
128-
to_remove.push(key_triple.clone())
129-
}
127+
Err(status::Error::DoesNotExist) => to_remove.push(key_triple.clone()),
130128
Err(e) => {
131129
error!("Error {} when opening a persistent Mbed Crypto key.", e);
132130
return None;
@@ -221,13 +219,6 @@ impl Provide for MbedProvider {
221219
}
222220
}
223221

224-
impl Drop for MbedProvider {
225-
fn drop(&mut self) {
226-
// Safety: the Provider was initialized with psa_crypto_init
227-
psa_crypto::drop();
228-
}
229-
}
230-
231222
#[derive(Default, Derivative)]
232223
#[derivative(Debug)]
233224
pub struct MbedProviderBuilder {

src/providers/mbed_provider/utils.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Copyright 2019 Contributors to the Parsec project.
22
// SPDX-License-Identifier: Apache-2.0
3-
use psa_crypto::types::key;
43
use parsec_interface::operations::psa_key_attributes::Type;
54
use parsec_interface::requests::{ResponseStatus, Result};
5+
use psa_crypto::types::key;
66

77
macro_rules! bits_to_bytes {
88
($size:expr) => {
@@ -14,8 +14,8 @@ macro_rules! bits_to_bytes {
1414
/// Implementing `PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE` as defined in `crypto_sizes.h` (Mbed Crypto).
1515
pub fn psa_asymmetric_sign_output_size(key_attrs: &key::Attributes) -> Result<usize> {
1616
match key_attrs.key_type {
17-
Type::RsaKeyPair => Ok(usize::from(bits_to_bytes!(key_attrs.bits))),
18-
Type::EccKeyPair{ .. } => Ok(usize::from(bits_to_bytes!(key_attrs.bits) * 2)),
17+
Type::RsaKeyPair => Ok(bits_to_bytes!(key_attrs.bits)),
18+
Type::EccKeyPair { .. } => Ok(bits_to_bytes!(key_attrs.bits) * 2),
1919
_ => Err(ResponseStatus::PsaErrorNotSupported),
2020
}
2121
}
@@ -30,9 +30,7 @@ pub fn psa_export_public_key_size(key_attrs: &key::Attributes) -> Result<usize>
3030
};
3131

3232
match key_attrs.key_type {
33-
Type::RsaPublicKey | Type::RsaKeyPair => Ok(usize::from(
34-
export_asn1_int_max_size!(key_attrs.bits) + 11,
35-
)),
33+
Type::RsaPublicKey | Type::RsaKeyPair => Ok(export_asn1_int_max_size!(key_attrs.bits) + 11),
3634
_ => Err(ResponseStatus::PsaErrorNotSupported),
3735
}
38-
}
36+
}

0 commit comments

Comments
 (0)