Skip to content

Commit 4d29d74

Browse files
committed
Fix create_ak for ECC keys
Fixing the parameters for creating AKs in the Endorsement Hierarchy. The `count` value part of the `EccScheme` has been adjusted, and an empty `EccPoint` was added as unique identifier for the key. Signed-off-by: Ionut Mihalcea <ionut.mihalcea@arm.com>
1 parent 3fa7ae2 commit 4d29d74

File tree

2 files changed

+30
-3
lines changed
  • tss-esapi

2 files changed

+30
-3
lines changed

tss-esapi/src/abstraction/ak.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use crate::{
1616
session_handles::PolicySession,
1717
},
1818
structures::{
19-
Auth, CreateKeyResult, EccScheme, KeyDerivationFunctionScheme, Private, Public,
19+
Auth, CreateKeyResult, EccPoint, EccScheme, KeyDerivationFunctionScheme, Private, Public,
2020
PublicBuilder, PublicEccParametersBuilder, PublicKeyRsa, PublicRsaParametersBuilder,
2121
RsaExponent, RsaScheme, SymmetricDefinitionObject,
2222
},
@@ -77,12 +77,17 @@ fn create_ak_public<IKC: IntoKeyCustomization>(
7777
.with_ecc_scheme(EccScheme::create(
7878
EccSchemeAlgorithm::try_from(AlgorithmIdentifier::from(sign_alg))?,
7979
Some(hash_alg),
80-
Some(0),
80+
if sign_alg == SignatureSchemeAlgorithm::EcDaa {
81+
Some(0)
82+
} else {
83+
None
84+
},
8185
)?)
8286
.with_curve(ecc_curve)
8387
.with_key_derivation_function_scheme(KeyDerivationFunctionScheme::Null)
8488
.build()?,
85-
),
89+
)
90+
.with_ecc_unique_identifier(EccPoint::default()),
8691
};
8792

8893
let key_builder = if let Some(ref k) = key_customization {

tss-esapi/tests/integration_tests/abstraction_tests/ak_tests.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,28 @@ fn test_create_ak_rsa_ecc() {
6767
}
6868
}
6969

70+
#[test]
71+
fn test_create_ak_ecc_ecc() {
72+
let mut context = create_ctx_without_session();
73+
74+
let ek_ecc = ek::create_ek_object(
75+
&mut context,
76+
AsymmetricAlgorithmSelection::Ecc(EccCurve::NistP384),
77+
None,
78+
)
79+
.unwrap();
80+
ak::create_ak(
81+
&mut context,
82+
ek_ecc,
83+
HashingAlgorithm::Sha256,
84+
AsymmetricAlgorithmSelection::Ecc(EccCurve::NistP256),
85+
SignatureSchemeAlgorithm::EcDsa,
86+
None,
87+
None,
88+
)
89+
.unwrap();
90+
}
91+
7092
#[test]
7193
fn test_create_and_use_ak() {
7294
let mut context = create_ctx_without_session();

0 commit comments

Comments
 (0)