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 | |
Vernon Mauery | 9e801a2 | 2018-10-12 13:20:49 -0700 | [diff] [blame] | 25 | static constexpr Const_n const_1 = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, |
| 26 | 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, |
| 27 | 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; |
Vernon Mauery | 9b307be | 2017-11-22 09:28:16 -0800 | [diff] [blame] | 28 | |
Vernon Mauery | 9e801a2 | 2018-10-12 13:20:49 -0700 | [diff] [blame] | 29 | static constexpr Const_n const_2 = {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, |
| 30 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, |
| 31 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}; |
Vernon Mauery | 9b307be | 2017-11-22 09:28:16 -0800 | [diff] [blame] | 32 | |
| 33 | } // namespace rmcp |