Vernon Mauery | 9b307be | 2017-11-22 09:28:16 -0800 | [diff] [blame] | 1 | #pragma once |
| 2 | |
| 3 | #include <array> |
| 4 | #include <cstdint> |
| 5 | |
| 6 | namespace rmcp |
| 7 | { |
| 8 | |
| 9 | /* |
| 10 | * RSP needs more keying material than can be provided by session |
| 11 | * integrity key alone. As a result all keying material for the RSP |
| 12 | * confidentiality algorithms will be generated by processing a |
| 13 | * pre-defined set of constants using HMAC per [RFC2104], keyed by SIK. |
| 14 | * These constants are constructed using a hexadecimal octet value |
| 15 | * repeated up to the HMAC block size in length starting with the |
| 16 | * constant 01h. This mechanism can be used to derive up to 255 |
| 17 | * HMAC-block-length pieces of keying material from a single SIK.For the |
| 18 | * mandatory confidentiality algorithm AES-CBC-128, processing the |
| 19 | * following constant will generate the required amount of keying |
| 20 | * material. |
| 21 | */ |
| 22 | constexpr size_t CONST_N_SIZE = 20; |
| 23 | using Const_n = std::array<uint8_t, CONST_N_SIZE>; |
| 24 | |
| 25 | static constexpr Const_n const_1 = { |
| 26 | 0x01, 0x01, 0x01, 0x01, 0x01, |
| 27 | 0x01, 0x01, 0x01, 0x01, 0x01, |
| 28 | 0x01, 0x01, 0x01, 0x01, 0x01, |
| 29 | 0x01, 0x01, 0x01, 0x01, 0x01 |
| 30 | }; |
| 31 | |
| 32 | static constexpr Const_n const_2 = { |
| 33 | 0x02, 0x02, 0x02, 0x02, 0x02, |
| 34 | 0x02, 0x02, 0x02, 0x02, 0x02, |
| 35 | 0x02, 0x02, 0x02, 0x02, 0x02, |
| 36 | 0x02, 0x02, 0x02, 0x02, 0x02 |
| 37 | }; |
| 38 | |
| 39 | } // namespace rmcp |