blob: d20fbf41d3d7e11b8d892a7377f3de835c2fc235 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/base/encryption_scheme.h"
#include <ostream>
#include "base/logging.h"
namespace media {
EncryptionScheme::EncryptionScheme() = default;
EncryptionScheme::EncryptionScheme(CipherMode mode,
const EncryptionPattern& pattern)
: mode_(mode), pattern_(pattern) {}
EncryptionScheme::~EncryptionScheme() = default;
bool EncryptionScheme::is_encrypted() const {
return mode_ != CIPHER_MODE_UNENCRYPTED;
}
EncryptionScheme::CipherMode EncryptionScheme::mode() const {
return mode_;
}
const EncryptionPattern& EncryptionScheme::pattern() const {
return pattern_;
}
bool EncryptionScheme::Matches(const EncryptionScheme& other) const {
return mode_ == other.mode_ && pattern_ == other.pattern_;
}
std::ostream& operator<<(std::ostream& os,
const EncryptionScheme& encryption_scheme) {
if (!encryption_scheme.is_encrypted())
return os << "Unencrypted";
if (encryption_scheme.mode() == EncryptionScheme::CIPHER_MODE_AES_CTR)
return os << "CENC";
if (encryption_scheme.mode() == EncryptionScheme::CIPHER_MODE_AES_CBC) {
return os << "CBCS with pattern ("
<< encryption_scheme.pattern().crypt_byte_block() << ","
<< encryption_scheme.pattern().skip_byte_block() << ")";
}
NOTREACHED();
return os << "Unknown EncryptionScheme, mode = " << encryption_scheme.mode();
}
} // namespace media