Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85fb71b2 authored by David Drysdale's avatar David Drysdale Committed by Gerrit Code Review
Browse files

Merge "RKPv2 spec clarifications"

parents 7b3833fe 28b95303
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -159,18 +159,27 @@ interface IRemotelyProvisionedComponent {
     *        IRemotelyProvisionedComponent must validate the MACs on each key.  If any entry in the
     *        array lacks a valid MAC, the method must return STATUS_INVALID_MAC.
     *
     *        If testMode is true, the keysToCertify array must contain only keys flagged as test
     *        If testMode is true, the keysToSign array must contain only keys flagged as test
     *        keys. Otherwise, the method must return STATUS_PRODUCTION_KEY_IN_TEST_REQUEST.
     *
     *        If testMode is false, the keysToCertify array must not contain any keys flagged as
     *        If testMode is false, the keysToSign array must not contain any keys flagged as
     *        test keys. Otherwise, the method must return STATUS_TEST_KEY_IN_PRODUCTION_REQUEST.
     *
     * @param in endpointEncryptionKey contains an X25519 public key which will be used to encrypt
     *        the BCC. For flexibility, this is represented as a certificate chain, represented as a
     *        CBOR array of COSE_Sign1 objects, ordered from root to leaf. The leaf contains the
     *        X25519 encryption key, each other element is an Ed25519 key signing the next in the
     *        chain. The root is self-signed. An implementor may also choose to use P256 as an
     *        alternative curve for signing and encryption instead of Curve 25519.
     * @param in endpointEncryptionKey contains an X25519 or P-256 public key which will be used to
     *        encrypt the BCC. For flexibility, this is represented as a certificate chain
     *        in the form of a CBOR array of COSE_Sign1 objects, ordered from root to leaf.  An
     *        implementor may also choose to use P256 as an alternative curve for signing and
     *        encryption instead of Curve 25519, as indicated by the supportedEekCurve field in
     *        RpcHardwareInfo; the contents of the EEK chain will match the specified
     *        supportedEekCurve.
     *
     *        - For CURVE_25519 the leaf contains the X25519 agreement key, each other element is an
     *          Ed25519 key signing the next in the chain.
     *
     *        - For CURVE_P256 the leaf contains the P-256 agreement key, each other element is a
     *          P-256 key signing the next in the chain.
     *
     *        In either case, the root is self-signed.
     *
     *            EekChain = [ + SignedSignatureKey, SignedEek ]
     *
+7 −2
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ parcelable ProtectedData {
     *                                     ; salt = null
     *                                     ; info = .cbor Context (see below)
     *                                     ; K = HKDF-SHA-256(ikm, salt, info)
     *                                     ; AAD for the encryption is a CBOR-serialized
     *                                     ; Enc_structure (RFC 8152 s5.3) with empty external_aad.
     *         recipients : [
     *             [                       ; COSE_Recipient
     *                 protected : bstr .cbor {
@@ -65,7 +67,10 @@ parcelable ProtectedData {
     *     ]
     *
     *     ; The COSE_KDF_Context that is used to derive the ProtectedData encryption key with
     *     ; HKDF. See details on use in ProtectedData comments above.
     *     ; HKDF. See details on use in ProtectedData comments above. The public key data
     *     ; included in the other field of PartyUInfo / PartyVInfo is encoded as:
     *     ;  - a raw 32-byte public key for X25519
     *     ;  - uncompressed SEC-1 coordinate data (0x04 || x || y) for P-256
     *     Context = [
     *         AlgorithmID : 3             ; AES-GCM 256
     *         PartyUInfo : [
@@ -138,7 +143,7 @@ parcelable ProtectedData {
     *                                            ; bytes inclusive
     *         VerifiedDeviceInfo,
     *         tag: bstr                 ; This is the tag from COSE_Mac0 of
     *                                   ; KeysToCertify, to tie the key set to
     *                                   ; KeysToSign, to tie the key set to
     *                                   ; the signature.
     *     ]
     *