MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / make_key

Function make_key

dds/DCPS/security/CryptoBuiltInImpl.cpp:109–137  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

107 const unsigned int MAX_BLOCKS_PER_SESSION = 1024;
108
109 KeyMaterial_AES_GCM_GMAC make_key(NativeCryptoHandle key_id, bool encrypt)
110 {
111 KeyMaterial_AES_GCM_GMAC k;
112
113 for (unsigned int i = 0; i < TransformKindIndex; ++i) {
114 k.transformation_kind[i] = 0;
115 }
116 k.transformation_kind[TransformKindIndex] =
117 encrypt ? CRYPTO_TRANSFORMATION_KIND_AES256_GCM
118 : CRYPTO_TRANSFORMATION_KIND_AES256_GMAC;
119
120 k.master_salt.length(KEY_LEN_BYTES);
121 RAND_bytes(k.master_salt.get_buffer(), KEY_LEN_BYTES);
122
123 const DDS::UInt32 key_id_u = static_cast<DDS::UInt32>(key_id);
124 for (unsigned int i = 0; i < sizeof k.sender_key_id; ++i) {
125 k.sender_key_id[i] = static_cast<ACE_CDR::Octet>(key_id_u >> (8 * i));
126 }
127
128 k.master_sender_key.length(KEY_LEN_BYTES);
129 RAND_bytes(k.master_sender_key.get_buffer(), KEY_LEN_BYTES);
130
131 for (unsigned int i = 0; i < sizeof k.receiver_specific_key_id; ++i) {
132 k.receiver_specific_key_id[i] = 0;
133 }
134
135 k.master_receiver_specific_key.length(0);
136 return k;
137 }
138
139 const unsigned submessage_key_index = 0;
140}

Callers 3

Calls 2

lengthMethod · 0.45
get_bufferMethod · 0.45

Tested by

no test coverage detected