| 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 |