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

Commit c83a3978 authored by David Drysdale's avatar David Drysdale Committed by Automerger Merge Worker
Browse files

Merge "RKPv2 spec clarifications" am: 85fb71b2 am: a6642987

parents 93b8f799 a6642987
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.
     *     ]
     *