- if (_encrypted) {
- _key_id = make_uuid ();
- uint8_t key_buffer[ASDCP::KeyLen];
- Kumu::FortunaRNG rng;
- rng.FillRandom (key_buffer, ASDCP::KeyLen);
- char key_string[ASDCP::KeyLen * 4];
- Kumu::bin2hex (key_buffer, ASDCP::KeyLen, key_string, ASDCP::KeyLen * 4);
- _key_value = key_string;
-
- _encryption_context = new ASDCP::AESEncContext;
- if (ASDCP_FAILURE (_encryption_context->InitKey (key_buffer))) {
- throw MiscError ("could not set up encryption context");
- }
-
- uint8_t cbc_buffer[ASDCP::CBC_BLOCK_SIZE];
-
- if (ASDCP_FAILURE (_encryption_context->SetIVec (rng.FillRandom (cbc_buffer, ASDCP::CBC_BLOCK_SIZE)))) {
- throw MiscError ("could not set up CBC initialization vector");
- }
- }