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 |