Index: media/cast/common/transport_encryption_handler.cc |
diff --git a/media/cast/transport/utility/transport_encryption_handler.cc b/media/cast/common/transport_encryption_handler.cc |
similarity index 74% |
rename from media/cast/transport/utility/transport_encryption_handler.cc |
rename to media/cast/common/transport_encryption_handler.cc |
index 49a6cd3ede0a737c7419c51db6656d622b25d681..54a43e8b52647fbd04d36ed1a2097e99e84b5382 100644 |
--- a/media/cast/transport/utility/transport_encryption_handler.cc |
+++ b/media/cast/common/transport_encryption_handler.cc |
@@ -2,16 +2,39 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "media/cast/transport/utility/transport_encryption_handler.h" |
+#include "media/cast/common/transport_encryption_handler.h" |
#include "base/logging.h" |
#include "crypto/encryptor.h" |
#include "crypto/symmetric_key.h" |
-#include "media/cast/transport/cast_transport_defines.h" |
+#include "media/cast/net/cast_transport_defines.h" |
+ |
+namespace { |
+ |
+// Crypto. |
+const size_t kAesBlockSize = 16; |
+const size_t kAesKeySize = 16; |
+ |
+std::string GetAesNonce(uint32 frame_id, const std::string& iv_mask) { |
+ std::string aes_nonce(kAesBlockSize, 0); |
+ |
+ // Serializing frame_id in big-endian order (aes_nonce[8] is the most |
+ // significant byte of frame_id). |
+ aes_nonce[11] = frame_id & 0xff; |
+ aes_nonce[10] = (frame_id >> 8) & 0xff; |
+ aes_nonce[9] = (frame_id >> 16) & 0xff; |
+ aes_nonce[8] = (frame_id >> 24) & 0xff; |
+ |
+ for (size_t i = 0; i < kAesBlockSize; ++i) { |
+ aes_nonce[i] ^= iv_mask[i]; |
+ } |
+ return aes_nonce; |
+} |
+ |
+} // namespace |
namespace media { |
namespace cast { |
-namespace transport { |
TransportEncryptionHandler::TransportEncryptionHandler() |
: key_(), encryptor_(), iv_mask_(), is_activated_(false) {} |
@@ -60,7 +83,7 @@ bool TransportEncryptionHandler::Decrypt(uint32 frame_id, |
if (!is_activated_) { |
return false; |
} |
- if (!encryptor_->SetCounter(transport::GetAesNonce(frame_id, iv_mask_))) { |
+ if (!encryptor_->SetCounter(GetAesNonce(frame_id, iv_mask_))) { |
NOTREACHED() << "Failed to set counter"; |
return false; |
} |
@@ -71,6 +94,5 @@ bool TransportEncryptionHandler::Decrypt(uint32 frame_id, |
return true; |
} |
-} // namespace transport |
} // namespace cast |
} // namespace media |