| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/sys_byteorder.h" | 9 #include "base/sys_byteorder.h" |
| 10 #include "media/base/decoder_buffer.h" | 10 #include "media/base/decoder_buffer.h" |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 EXPECT_CALL(*this, BufferDecrypted(AesDecryptor::kSuccess, NotNull())) | 233 EXPECT_CALL(*this, BufferDecrypted(AesDecryptor::kSuccess, NotNull())) |
| 234 .WillOnce(SaveArg<1>(&decrypted)); | 234 .WillOnce(SaveArg<1>(&decrypted)); |
| 235 | 235 |
| 236 decryptor_.Decrypt(encrypted_data, decrypt_cb_); | 236 decryptor_.Decrypt(encrypted_data, decrypt_cb_); |
| 237 ASSERT_TRUE(decrypted); | 237 ASSERT_TRUE(decrypted); |
| 238 ASSERT_EQ(plain_text_size, decrypted->GetDataSize()); | 238 ASSERT_EQ(plain_text_size, decrypted->GetDataSize()); |
| 239 EXPECT_EQ(0, memcmp(plain_text, decrypted->GetData(), plain_text_size)); | 239 EXPECT_EQ(0, memcmp(plain_text, decrypted->GetData(), plain_text_size)); |
| 240 } | 240 } |
| 241 | 241 |
| 242 void DecryptAndExpectToFail(const uint8* data, int data_size, | 242 void DecryptAndExpectToFail(const uint8* data, int data_size, |
| 243 const uint8* plain_text, int plain_text_size, | |
| 244 const uint8* key_id, int key_id_size) { | 243 const uint8* key_id, int key_id_size) { |
| 245 scoped_refptr<DecoderBuffer> encrypted_data = | 244 scoped_refptr<DecoderBuffer> encrypted_data = |
| 246 CreateWebMEncryptedBuffer(data, data_size, key_id, key_id_size); | 245 CreateWebMEncryptedBuffer(data, data_size, key_id, key_id_size); |
| 247 EXPECT_CALL(*this, BufferDecrypted(AesDecryptor::kError, IsNull())); | 246 EXPECT_CALL(*this, BufferDecrypted(AesDecryptor::kError, IsNull())); |
| 248 decryptor_.Decrypt(encrypted_data, decrypt_cb_); | 247 decryptor_.Decrypt(encrypted_data, decrypt_cb_); |
| 249 } | 248 } |
| 250 | 249 |
| 251 scoped_refptr<DecoderBuffer> encrypted_data_; | 250 scoped_refptr<DecoderBuffer> encrypted_data_; |
| 252 MockDecryptorClient client_; | 251 MockDecryptorClient client_; |
| 253 AesDecryptor decryptor_; | 252 AesDecryptor decryptor_; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 268 frame.key_id_size)); | 267 frame.key_id_size)); |
| 269 } | 268 } |
| 270 | 269 |
| 271 TEST_F(AesDecryptorTest, WrongKey) { | 270 TEST_F(AesDecryptorTest, WrongKey) { |
| 272 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; | 271 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; |
| 273 GenerateKeyRequest(frame.key_id, frame.key_id_size); | 272 GenerateKeyRequest(frame.key_id, frame.key_id_size); |
| 274 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, | 273 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, |
| 275 kWebmWrongKey, arraysize(kWebmWrongKey)); | 274 kWebmWrongKey, arraysize(kWebmWrongKey)); |
| 276 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(frame.encrypted_data, | 275 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(frame.encrypted_data, |
| 277 frame.encrypted_data_size, | 276 frame.encrypted_data_size, |
| 278 frame.plain_text, | |
| 279 frame.plain_text_size, | |
| 280 frame.key_id, | 277 frame.key_id, |
| 281 frame.key_id_size)); | 278 frame.key_id_size)); |
| 282 } | 279 } |
| 283 | 280 |
| 281 TEST_F(AesDecryptorTest, NoKey) { |
| 282 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; |
| 283 GenerateKeyRequest(frame.key_id, frame.key_id_size); |
| 284 |
| 285 scoped_refptr<DecoderBuffer> encrypted_data = |
| 286 CreateWebMEncryptedBuffer(frame.encrypted_data, frame.encrypted_data_size, |
| 287 frame.key_id, frame.key_id_size); |
| 288 EXPECT_CALL(*this, BufferDecrypted(AesDecryptor::kNoKey, IsNull())); |
| 289 decryptor_.Decrypt(encrypted_data, decrypt_cb_); |
| 290 } |
| 291 |
| 284 TEST_F(AesDecryptorTest, KeyReplacement) { | 292 TEST_F(AesDecryptorTest, KeyReplacement) { |
| 285 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; | 293 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; |
| 286 GenerateKeyRequest(frame.key_id, frame.key_id_size); | 294 GenerateKeyRequest(frame.key_id, frame.key_id_size); |
| 287 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, | 295 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, |
| 288 kWebmWrongKey, arraysize(kWebmWrongKey)); | 296 kWebmWrongKey, arraysize(kWebmWrongKey)); |
| 289 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(frame.encrypted_data, | 297 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(frame.encrypted_data, |
| 290 frame.encrypted_data_size, | 298 frame.encrypted_data_size, |
| 291 frame.plain_text, | |
| 292 frame.plain_text_size, | |
| 293 frame.key_id, | 299 frame.key_id, |
| 294 frame.key_id_size)); | 300 frame.key_id_size)); |
| 295 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, | 301 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, |
| 296 frame.key, frame.key_size); | 302 frame.key, frame.key_size); |
| 297 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToSucceed(frame.encrypted_data, | 303 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToSucceed(frame.encrypted_data, |
| 298 frame.encrypted_data_size, | 304 frame.encrypted_data_size, |
| 299 frame.plain_text, | 305 frame.plain_text, |
| 300 frame.plain_text_size, | 306 frame.plain_text_size, |
| 301 frame.key_id, | 307 frame.key_id, |
| 302 frame.key_id_size)); | 308 frame.key_id_size)); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 frame2.key_id_size)); | 348 frame2.key_id_size)); |
| 343 } | 349 } |
| 344 | 350 |
| 345 TEST_F(AesDecryptorTest, HmacCheckFailure) { | 351 TEST_F(AesDecryptorTest, HmacCheckFailure) { |
| 346 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; | 352 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; |
| 347 GenerateKeyRequest(frame.key_id, frame.key_id_size); | 353 GenerateKeyRequest(frame.key_id, frame.key_id_size); |
| 348 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, | 354 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, |
| 349 frame.key, frame.key_size); | 355 frame.key, frame.key_size); |
| 350 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(kWebmFrame0HmacDataChanged, | 356 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(kWebmFrame0HmacDataChanged, |
| 351 frame.encrypted_data_size, | 357 frame.encrypted_data_size, |
| 352 frame.plain_text, | |
| 353 frame.plain_text_size, | |
| 354 frame.key_id, | 358 frame.key_id, |
| 355 frame.key_id_size)); | 359 frame.key_id_size)); |
| 356 } | 360 } |
| 357 | 361 |
| 358 TEST_F(AesDecryptorTest, IvCheckFailure) { | 362 TEST_F(AesDecryptorTest, IvCheckFailure) { |
| 359 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; | 363 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; |
| 360 GenerateKeyRequest(frame.key_id, frame.key_id_size); | 364 GenerateKeyRequest(frame.key_id, frame.key_id_size); |
| 361 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, | 365 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, |
| 362 frame.key, frame.key_size); | 366 frame.key, frame.key_size); |
| 363 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(kWebmFrame0IvDataChanged, | 367 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(kWebmFrame0IvDataChanged, |
| 364 frame.encrypted_data_size, | 368 frame.encrypted_data_size, |
| 365 frame.plain_text, | |
| 366 frame.plain_text_size, | |
| 367 frame.key_id, | 369 frame.key_id, |
| 368 frame.key_id_size)); | 370 frame.key_id_size)); |
| 369 } | 371 } |
| 370 | 372 |
| 371 TEST_F(AesDecryptorTest, DataCheckFailure) { | 373 TEST_F(AesDecryptorTest, DataCheckFailure) { |
| 372 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; | 374 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; |
| 373 GenerateKeyRequest(frame.key_id, frame.key_id_size); | 375 GenerateKeyRequest(frame.key_id, frame.key_id_size); |
| 374 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, | 376 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, |
| 375 frame.key, frame.key_size); | 377 frame.key, frame.key_size); |
| 376 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(kWebmFrame0FrameDataChanged, | 378 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(kWebmFrame0FrameDataChanged, |
| 377 frame.encrypted_data_size, | 379 frame.encrypted_data_size, |
| 378 frame.plain_text, | |
| 379 frame.plain_text_size, | |
| 380 frame.key_id, | 380 frame.key_id, |
| 381 frame.key_id_size)); | 381 frame.key_id_size)); |
| 382 } | 382 } |
| 383 | 383 |
| 384 } // namespace media | 384 } // namespace media |
| OLD | NEW |