12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // Copyright 2018 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.
- #ifndef MEDIA_CDM_CENC_DECRYPTOR_H_
- #define MEDIA_CDM_CENC_DECRYPTOR_H_
- #include "base/memory/ref_counted.h"
- #include "media/base/media_export.h"
- namespace crypto {
- class SymmetricKey;
- }
- namespace media {
- class DecoderBuffer;
- // This class implements 'cenc' AES-CTR scheme as specified by
- // ISO/IEC 23001-7:2016, section 10.1 (https://www.iso.org). Decryption
- // uses the Advanced Encryption Standard specified by AES [FIPS-197,
- // https://www.nist.gov] using 128-bit keys in Counter Mode (AES-CTR-128),
- // as specified in Block Cipher Modes [NIST 800-38A, https://www.nist.gov].
- //
- // Each input buffer is divided into one or more contiguous subsamples. Each
- // subsample has an unprotected part (unencrypted) followed by a protected part
- // (encrypted), only one of which may be zero bytes in length. For example:
- // | DecoderBuffer.data() |
- // | Subsample#1 | Subsample#2 | Subsample#3 |
- // |uuuuu|eeeeeeeeee|uuuu|eeeeeeeeeeee|uu|eeeeeeeeeeee|
- // Subsample encryption encrypts all the bytes in the protected part of the
- // sample. The protected byte sequences of all subsamples is treated as a
- // logically continuous chain of 16 byte cipher blocks, even when they are
- // separated by unprotected data.
- //
- // If no subsamples are specified, the whole input buffer will be treated as
- // protected data.
- // Decrypts the encrypted buffer |input| using |key| and values found in
- // |input|->DecryptConfig. The key size must be 128 bits.
- MEDIA_EXPORT scoped_refptr<DecoderBuffer> DecryptCencBuffer(
- const DecoderBuffer& input,
- const crypto::SymmetricKey& key);
- } // namespace media
- #endif // MEDIA_CDM_CENC_DECRYPTOR_H_
|