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 16namespace crypto { 17class Encryptor; 18class SymmetricKey; 19} 20 21namespace media { 22namespace cast { 23 24class 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 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