put steps in a list

This commit is contained in:
Hubert Chathi 2023-07-04 17:24:49 -04:00
parent 5485179627
commit f1bc8face6

View file

@ -777,37 +777,37 @@ The method used to calculate these MACs depends upon the value of the
message. All current implementations should use the `hkdf-hmac-sha256.v2` method which is message. All current implementations should use the `hkdf-hmac-sha256.v2` method which is
defined as follows: defined as follows:
An HMAC key is generated using HKDF, as defined in [RFC 1. An HMAC key is generated using HKDF, as defined in [RFC
5869](https://tools.ietf.org/html/rfc5869), using SHA-256 as the hash 5869](https://tools.ietf.org/html/rfc5869), using SHA-256 as the hash
function. The shared secret is supplied as the input keying material. No salt function. The shared secret is supplied as the input keying material. No salt
is used, and in the info parameter is the concatenation of: is used, and in the info parameter is the concatenation of:
- The string `MATRIX_KEY_VERIFICATION_MAC`. - The string `MATRIX_KEY_VERIFICATION_MAC`.
- The Matrix ID of the user whose key is being MAC-ed. - The Matrix ID of the user whose key is being MAC-ed.
- The Device ID of the device sending the MAC. - The Device ID of the device sending the MAC.
- The Matrix ID of the other user. - The Matrix ID of the other user.
- The Device ID of the device receiving the MAC. - The Device ID of the device receiving the MAC.
- The `transaction_id` being used. - The `transaction_id` being used.
- The Key ID of the key being MAC-ed, or the string `KEY_IDS` if the - The Key ID of the key being MAC-ed, or the string `KEY_IDS` if the
item being MAC-ed is the list of key IDs. item being MAC-ed is the list of key IDs.
A MAC is then generated using HMAC as defined in [RFC 2. A MAC is then generated using HMAC as defined in [RFC
2104](https://tools.ietf.org/html/rfc2104) with the key generated above and 2104](https://tools.ietf.org/html/rfc2104) with the key generated above and
using SHA-256 as the hash function. using SHA-256 as the hash function.
If a key is being MACed, the MAC is performed on the public key as encoded If a key is being MACed, the MAC is performed on the public key as encoded
according to the [key algorithm](#key-algorithms). For example, for `ed25519` according to the [key algorithm](#key-algorithms). For example, for `ed25519`
keys, it is the unpadded base64-encoded key. keys, it is the unpadded base64-encoded key.
If the key list is being MACed, the list is sorted lexicographically and If the key list is being MACed, the list is sorted lexicographically and
comma-separated with no extra whitespace added, with each key written in the comma-separated with no extra whitespace added, with each key written in the
form `{algorithm}:{keyId}`. For example, the key list could look like: form `{algorithm}:{keyId}`. For example, the key list could look like:
`ed25519:Cross+Signing+Key,ed25519:DEVICEID`. In this way, the recipient can `ed25519:Cross+Signing+Key,ed25519:DEVICEID`. In this way, the recipient can
reconstruct the list from the names in the `mac` property of the reconstruct the list from the names in the `mac` property of the
`m.key.verification.mac` message and ensure that no keys were added or removed. `m.key.verification.mac` message and ensure that no keys were added or removed.
The MAC values are base64-encoded and sent in a 3. The MAC values are base64-encoded and sent in a
[`m.key.verification.mac`](#mkeyverificationmac) message. [`m.key.verification.mac`](#mkeyverificationmac) message.
{{% boxes/note %}} {{% boxes/note %}}
The MAC method `hkdf-hmac-sha256` used an incorrect base64 encoding, due to a The MAC method `hkdf-hmac-sha256` used an incorrect base64 encoding, due to a