Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Side by Side Diff: media/cast/transport/utility/transport_encryption_handler.cc

Issue 388663003: Cast: Reshuffle files under media/cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: missing includes Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/cast/transport/utility/transport_encryption_handler.h"
6
7 #include "base/logging.h"
8 #include "crypto/encryptor.h"
9 #include "crypto/symmetric_key.h"
10 #include "media/cast/transport/cast_transport_defines.h"
11
12 namespace media {
13 namespace cast {
14 namespace transport {
15
16 TransportEncryptionHandler::TransportEncryptionHandler()
17 : key_(), encryptor_(), iv_mask_(), is_activated_(false) {}
18
19 TransportEncryptionHandler::~TransportEncryptionHandler() {}
20
21 bool TransportEncryptionHandler::Initialize(std::string aes_key,
22 std::string aes_iv_mask) {
23 is_activated_ = false;
24 if (aes_iv_mask.size() == kAesKeySize && aes_key.size() == kAesKeySize) {
25 iv_mask_ = aes_iv_mask;
26 key_.reset(
27 crypto::SymmetricKey::Import(crypto::SymmetricKey::AES, aes_key));
28 encryptor_.reset(new crypto::Encryptor());
29 encryptor_->Init(key_.get(), crypto::Encryptor::CTR, std::string());
30 is_activated_ = true;
31 } else if (aes_iv_mask.size() != 0 || aes_key.size() != 0) {
32 DCHECK_EQ(aes_iv_mask.size(), 0u)
33 << "Invalid Crypto configuration: aes_iv_mask.size";
34 DCHECK_EQ(aes_key.size(), 0u)
35 << "Invalid Crypto configuration: aes_key.size";
36 return false;
37 }
38 return true;
39 }
40
41 bool TransportEncryptionHandler::Encrypt(uint32 frame_id,
42 const base::StringPiece& data,
43 std::string* encrypted_data) {
44 if (!is_activated_)
45 return false;
46 if (!encryptor_->SetCounter(GetAesNonce(frame_id, iv_mask_))) {
47 NOTREACHED() << "Failed to set counter";
48 return false;
49 }
50 if (!encryptor_->Encrypt(data, encrypted_data)) {
51 NOTREACHED() << "Encrypt error";
52 return false;
53 }
54 return true;
55 }
56
57 bool TransportEncryptionHandler::Decrypt(uint32 frame_id,
58 const base::StringPiece& ciphertext,
59 std::string* plaintext) {
60 if (!is_activated_) {
61 return false;
62 }
63 if (!encryptor_->SetCounter(transport::GetAesNonce(frame_id, iv_mask_))) {
64 NOTREACHED() << "Failed to set counter";
65 return false;
66 }
67 if (!encryptor_->Decrypt(ciphertext, plaintext)) {
68 VLOG(1) << "Decryption error";
69 return false;
70 }
71 return true;
72 }
73
74 } // namespace transport
75 } // namespace cast
76 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/transport/utility/transport_encryption_handler.h ('k') | media/cast/video_sender/codecs/vp8/vp8_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698