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 #ifndef MEDIA_CAST_COMMON_TRANSPORT_ENCRYPTION_HANDLER_H_ 6 #define MEDIA_CAST_COMMON_TRANSPORT_ENCRYPTION_HANDLER_H_ 7 8 // Helper class to handle encryption for the Cast Transport library. 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "base/memory/scoped_ptr.h" 13 #include "base/strings/string_piece.h" 14 #include "base/threading/non_thread_safe.h" 15 16 namespace crypto { 17 class Encryptor; 18 class SymmetricKey; 19 } 20 21 namespace media { 22 namespace cast { 23 24 class TransportEncryptionHandler : public base::NonThreadSafe { 25 public: 26 TransportEncryptionHandler(); 27 ~TransportEncryptionHandler(); 28 29 bool Initialize(std::string aes_key, std::string aes_iv_mask); 30 31 bool Encrypt(uint32 frame_id, 32 const base::StringPiece& data, 33 std::string* encrypted_data); 34 35 bool Decrypt(uint32 frame_id, 36 const base::StringPiece& ciphertext, 37 std::string* plaintext); 38 is_activated()39 bool is_activated() const { return is_activated_; } 40 41 private: 42 scoped_ptr<crypto::SymmetricKey> key_; 43 scoped_ptr<crypto::Encryptor> encryptor_; 44 std::string iv_mask_; 45 bool is_activated_; 46 47 DISALLOW_COPY_AND_ASSIGN(TransportEncryptionHandler); 48 }; 49 50 } // namespace cast 51 } // namespace media 52 53 #endif // MEDIA_CAST_COMMON_TRANSPORT_ENCRYPTION_HANDLER_H_ 54