Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Side by Side Diff: media/crypto/aes_decryptor_unittest.cc

Issue 10822026: Implement "Key Presence" step in "Encrypted Block Encounted" algorithm in EME. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698