-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
adds a signature::Signer
interface
#537
base: main
Are you sure you want to change the base?
adds a signature::Signer
interface
#537
Conversation
85783cc
to
6525f15
Compare
336466d
to
8145f8e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for reviewing a WIP though I found it a little bit interesting so I couldn't help my self. Feel free to disregard anything I have commented on.
tss-esapi/tests/integration_tests/abstraction_tests/public_tests.rs
Outdated
Show resolved
Hide resolved
df740fd
to
eaf82d5
Compare
Oh, no, thanks for reviewing it! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for bringing the patch! The overall design looks good to me.
// Note: this does not implement `TryFrom<RsaSignature>` because `RsaSignature` does not carry the | ||
// information whether the signatures was generated using PKCS#1v1.5 or PSS. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The fields of RsaSignature
are private, so we can extend it to capture this detail as well. It's a deviation from the TPM spec, but I don't necessarily see a problem with it. Thoughts?
cc @Superhepper
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No it is not really a problem as long as it does not causes any ambiguities in the conversions between TPMS_SIGNATURE_RSA
and RsaSignature
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's fine like that, the comment was more for a future self why we would not have such a TryFrom
use signature::{DigestSigner, Error as SigError, KeypairRef}; | ||
|
||
#[derive(Debug)] | ||
pub struct Ecdsa<'ctx, C> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(I know this is a draft: ) Would be good to have some docs on these structs to make it clear what they're meant for.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried to add some, and add a code sample in the doc as well.
/// Key parameters for this curve | ||
pub fn key_params<D>() -> KeyParams |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a bit mystified by the purpose of this function. Also by the use of "this curve" in the doc for it, given that Ecdsa
is presumably not the description of a curve (?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C
describes the curve (could be NistP256
, NistP384
, NistP521
, ...) those are all supported here. When using the signer (through the Ecdsa
struct) you would specify which curve you're using.
This would pick the correct parameters to specify to the TPM when signing, the size of the object that comes back from signature, how to verify them, ...
This function just creates the TPM parameters related to this curve and the selected digest.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, I think I was mostly confused by the existence of two nearly-identical methods before, and that the struct they're tacked to doesn't represent (just) a specific curve.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The key_params_default
just use the "default" hashing mechanism for a given curve (P256 would use sha256, P384 would use sha384, etc).
The hashing methods needs to line up otherwise the curve has a higher "security score" than the hashing mechanism it uses and it's a waste of space.
fe52b1c
to
fa8ff3a
Compare
7bcbb0c
to
b79e193
Compare
tss-esapi/tests/integration_tests/abstraction_tests/transient_key_context_tests.rs
Show resolved
Hide resolved
tss-esapi/tests/integration_tests/abstraction_tests/transient_key_context_tests.rs
Show resolved
Hide resolved
b79e193
to
9f760ad
Compare
9f760ad
to
edf67ed
Compare
edf67ed
to
73e0b9c
Compare
0c34e21
to
1ce212a
Compare
signature::Signer
interfacesignature::Signer
interface
4c1ee47
to
9ef5f92
Compare
The two remaining failing tests should be fixed by #562 I'll rebase once that merges. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it looks fine though my experience with these things are quite limited so I mainly focused on the code structure and concepts.
One thing that will always be discussed is conversions from reference types. I think it is ok here because I do not see any clone
or to_owned
any where.
9ef5f92
to
91fe771
Compare
91fe771
to
55831ae
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it looks good, a couple of question-nits...
01d0df7
to
af146ef
Compare
af146ef
to
e21adf0
Compare
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
Signed-off-by: Arthur Gautier <arthur.gautier@arista.com>
e21adf0
to
ad664c0
Compare
This brings an implementation of a
signature::Signer
for keys stored on the TPM.This is intend to make for easier re-use of this crate and to allow to:
Here is an implementation of an SSH agent making use of that infrastructure: wiktor-k/ssh-agent-lib#87