You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#251 discusses various consistency concerns related to securesystemslib (TUF/in-toto) cryptographic keys.
This is an attempt to carve (and flesh) out only those concerns related to the format of public keys as they appear in TUF/in-toto metadata, with the goal of a clear specification likely as part (or appendix) of the new signing-spec and its reference implementation in securesystemslib.
Below in 'Current behavior' is an exhaustive list of available values for public keys as currently implemented in securesystemslib. This includes rsa, ecdsa, ed25519 and spx (WIP #169) keys generated with securesystemslib, plus keys exported from a GnuPG keyring using securesystemslib.gpg or from a cryptographic token (e.g. HSM) using securesystemslib.hsm (WIP #229).
Related concerns and calls for action are listed further below in 'Expected behavior'.
Current behavior:
Public key container (mandatory fields)
{
'keyid' <...>, # Optional in the spec, but included in the in-toto reference implementation
'keytype': <...>,
'scheme': <...>,
'keyval': {
'private': <...>, # Must be omitted or empty for public keys
'public': <...>
}
}
'keyid'
ascii hex of canonical JSON (OLPC) of parts of the key dictionary
Note that 'keyid' is not part of the public key metadata format according to in-toto/TUF specifications and tuf reference implementation, but it is included in the in-toto reference implementation (see #251 PR description).
{
"q": <MPI of an EC point representing a public key (ascii hex)>
}
'private'
(NOTE: The 'private' portion is not directly relevant for this issue, as it must not be included in TUF/in-toto metadata. For the sake of completeness we still list the private key values that are currently kept internally in securesystemslib).
Description of issue or feature request:
#251 discusses various consistency concerns related to securesystemslib (TUF/in-toto) cryptographic keys.
This is an attempt to carve (and flesh) out only those concerns related to the format of public keys as they appear in TUF/in-toto metadata, with the goal of a clear specification likely as part (or appendix) of the new signing-spec and its reference implementation in
securesystemslib.Below in 'Current behavior' is an exhaustive list of available values for public keys as currently implemented in
securesystemslib. This includes rsa, ecdsa, ed25519 and spx (WIP #169) keys generated withsecuresystemslib, plus keys exported from a GnuPG keyring usingsecuresystemslib.gpgor from a cryptographic token (e.g. HSM) usingsecuresystemslib.hsm(WIP #229).Related concerns and calls for action are listed further below in 'Expected behavior'.
Current behavior:
Public key container (mandatory fields)
'keyid'
gpgkeys only)Note that 'keyid' is not part of the public key metadata format according to in-toto/TUF specifications and tuf reference implementation, but it is included in the in-toto reference implementation (see #251 PR description).
'keytype'
'scheme'
'type'
(
gpgkeys only, instead of 'keytype')'method'
(
gpgkeys only, instead of 'scheme')'hashes'
(
gpgkeys only, instead of 'scheme')'keyval'
'public'
X.509 SubjectPublicKeyInfo PEM string (RFC5280)
32 bytes ascii hex key data (RFC8032)
64 bytes key data (SPHINCS+-SHAKE256)
gpg(RFC4880)gpg(RFC4880)gpg(RFC4880)'private'
(NOTE: The 'private' portion is not directly relevant for this issue, as it must not be included in TUF/in-toto metadata. For the sake of completeness we still list the private key values that are currently kept internally in
securesystemslib).PKCS#1/TraditionalOpenSSL PEM string (RFC8017)
32 bytes ascii hex key data (RFC8032)
128 bytes key data (SPHINCS+-SHAKE256)**
Optional fields
Expected behavior:
'keyid'
Consolidate 'keytype', 'type', 'scheme', 'method', 'hashes' fields and values
'keyval'
optional fields