| 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 "media/crypto/aes_decryptor.h" | 5 #include "media/crypto/aes_decryptor.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "crypto/encryptor.h" | 10 #include "crypto/encryptor.h" |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 | 274 |
| 275 DecryptionKey* key = NULL; | 275 DecryptionKey* key = NULL; |
| 276 { | 276 { |
| 277 base::AutoLock auto_lock(key_map_lock_); | 277 base::AutoLock auto_lock(key_map_lock_); |
| 278 KeyMap::const_iterator found = key_map_.find(key_id); | 278 KeyMap::const_iterator found = key_map_.find(key_id); |
| 279 if (found != key_map_.end()) | 279 if (found != key_map_.end()) |
| 280 key = found->second; | 280 key = found->second; |
| 281 } | 281 } |
| 282 | 282 |
| 283 if (!key) { | 283 if (!key) { |
| 284 // TODO(fgalligan): Fire a need_key event here and add a test. | |
| 285 DVLOG(1) << "Could not find a matching key for given key ID."; | 284 DVLOG(1) << "Could not find a matching key for given key ID."; |
| 286 decrypt_cb.Run(kError, NULL); | 285 decrypt_cb.Run(kNoKey, NULL); |
| 287 return; | 286 return; |
| 288 } | 287 } |
| 289 | 288 |
| 290 int checksum_size = encrypted->GetDecryptConfig()->checksum().size(); | 289 int checksum_size = encrypted->GetDecryptConfig()->checksum().size(); |
| 291 // According to the WebM encrypted specification, it is an open question | 290 // According to the WebM encrypted specification, it is an open question |
| 292 // what should happen when a frame fails the integrity check. | 291 // what should happen when a frame fails the integrity check. |
| 293 // http://wiki.webmproject.org/encryption/webm-encryption-rfc | 292 // http://wiki.webmproject.org/encryption/webm-encryption-rfc |
| 294 if (checksum_size > 0 && | 293 if (checksum_size > 0 && |
| 295 !key->hmac_key().empty() && | 294 !key->hmac_key().empty() && |
| 296 !CheckData(*encrypted, key->hmac_key())) { | 295 !CheckData(*encrypted, key->hmac_key())) { |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 | 345 |
| 347 hmac_key_ = DeriveKey(secret_, kWebmHmacSeed, kWebmSha1DigestSize); | 346 hmac_key_ = DeriveKey(secret_, kWebmHmacSeed, kWebmSha1DigestSize); |
| 348 if (hmac_key_.empty()) { | 347 if (hmac_key_.empty()) { |
| 349 return false; | 348 return false; |
| 350 } | 349 } |
| 351 | 350 |
| 352 return true; | 351 return true; |
| 353 } | 352 } |
| 354 | 353 |
| 355 } // namespace media | 354 } // namespace media |
| OLD | NEW |