OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/webcrypto/algorithms/aes.h" | 5 #include "components/webcrypto/algorithms/aes.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "components/webcrypto/algorithms/secret_key_util.h" | 8 #include "components/webcrypto/algorithms/secret_key_util.h" |
9 #include "components/webcrypto/crypto_data.h" | 9 #include "components/webcrypto/crypto_data.h" |
10 #include "components/webcrypto/jwk.h" | 10 #include "components/webcrypto/jwk.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
49 Status AesAlgorithm::GenerateKey(const blink::WebCryptoAlgorithm& algorithm, | 49 Status AesAlgorithm::GenerateKey(const blink::WebCryptoAlgorithm& algorithm, |
50 bool extractable, | 50 bool extractable, |
51 blink::WebCryptoKeyUsageMask usages, | 51 blink::WebCryptoKeyUsageMask usages, |
52 GenerateKeyResult* result) const { | 52 GenerateKeyResult* result) const { |
53 Status status = CheckKeyCreationUsages(all_key_usages_, usages, false); | 53 Status status = CheckKeyCreationUsages(all_key_usages_, usages, false); |
54 if (status.IsError()) | 54 if (status.IsError()) |
55 return status; | 55 return status; |
56 | 56 |
57 unsigned int keylen_bits = algorithm.aesKeyGenParams()->lengthBits(); | 57 unsigned int keylen_bits = algorithm.aesKeyGenParams()->lengthBits(); |
58 | 58 |
59 // BoringSSL does not support 192-bit AES. | 59 // 192-bit AES is intentionally unsupported (http://crubg.com/533699) |
davidben
2015/09/22 19:08:24
Nit: period at end.
Also crubg -> crbug
(Ditto be
eroman
2015/09/22 22:25:38
Done (everywhere)
| |
60 if (keylen_bits == 192) | 60 if (keylen_bits == 192) |
61 return Status::ErrorAes192BitUnsupported(); | 61 return Status::ErrorAes192BitUnsupported(); |
62 | 62 |
63 if (keylen_bits != 128 && keylen_bits != 256) | 63 if (keylen_bits != 128 && keylen_bits != 256) |
64 return Status::ErrorGenerateAesKeyLength(); | 64 return Status::ErrorGenerateAesKeyLength(); |
65 | 65 |
66 return GenerateWebCryptoSecretKey( | 66 return GenerateWebCryptoSecretKey( |
67 blink::WebCryptoKeyAlgorithm::createAes(algorithm.id(), keylen_bits), | 67 blink::WebCryptoKeyAlgorithm::createAes(algorithm.id(), keylen_bits), |
68 extractable, usages, keylen_bits, result); | 68 extractable, usages, keylen_bits, result); |
69 } | 69 } |
(...skipping 10 matching lines...) Expand all Loading... | |
80 } | 80 } |
81 } | 81 } |
82 | 82 |
83 Status AesAlgorithm::ImportKeyRaw(const CryptoData& key_data, | 83 Status AesAlgorithm::ImportKeyRaw(const CryptoData& key_data, |
84 const blink::WebCryptoAlgorithm& algorithm, | 84 const blink::WebCryptoAlgorithm& algorithm, |
85 bool extractable, | 85 bool extractable, |
86 blink::WebCryptoKeyUsageMask usages, | 86 blink::WebCryptoKeyUsageMask usages, |
87 blink::WebCryptoKey* key) const { | 87 blink::WebCryptoKey* key) const { |
88 const unsigned int keylen_bytes = key_data.byte_length(); | 88 const unsigned int keylen_bytes = key_data.byte_length(); |
89 | 89 |
90 // BoringSSL does not support 192-bit AES. | 90 // 192-bit AES is intentionally unsupported (http://crubg.com/533699) |
91 if (keylen_bytes == 24) | 91 if (keylen_bytes == 24) |
92 return Status::ErrorAes192BitUnsupported(); | 92 return Status::ErrorAes192BitUnsupported(); |
93 | 93 |
94 if (keylen_bytes != 16 && keylen_bytes != 32) | 94 if (keylen_bytes != 16 && keylen_bytes != 32) |
95 return Status::ErrorImportAesKeyLength(); | 95 return Status::ErrorImportAesKeyLength(); |
96 | 96 |
97 // No possibility of overflow. | 97 // No possibility of overflow. |
98 unsigned int keylen_bits = keylen_bytes * 8; | 98 unsigned int keylen_bits = keylen_bytes * 8; |
99 | 99 |
100 return CreateWebCryptoSecretKey( | 100 return CreateWebCryptoSecretKey( |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
171 Status AesAlgorithm::GetKeyLength( | 171 Status AesAlgorithm::GetKeyLength( |
172 const blink::WebCryptoAlgorithm& key_length_algorithm, | 172 const blink::WebCryptoAlgorithm& key_length_algorithm, |
173 bool* has_length_bits, | 173 bool* has_length_bits, |
174 unsigned int* length_bits) const { | 174 unsigned int* length_bits) const { |
175 *has_length_bits = true; | 175 *has_length_bits = true; |
176 *length_bits = key_length_algorithm.aesDerivedKeyParams()->lengthBits(); | 176 *length_bits = key_length_algorithm.aesDerivedKeyParams()->lengthBits(); |
177 | 177 |
178 if (*length_bits == 128 || *length_bits == 256) | 178 if (*length_bits == 128 || *length_bits == 256) |
179 return Status::Success(); | 179 return Status::Success(); |
180 | 180 |
181 // BoringSSL does not support 192-bit AES. | 181 // 192-bit AES is intentionally unsupported (http://crubg.com/533699) |
182 if (*length_bits == 192) | 182 if (*length_bits == 192) |
183 return Status::ErrorAes192BitUnsupported(); | 183 return Status::ErrorAes192BitUnsupported(); |
184 | 184 |
185 return Status::ErrorGetAesKeyLength(); | 185 return Status::ErrorGetAesKeyLength(); |
186 } | 186 } |
187 | 187 |
188 } // namespace webcrypto | 188 } // namespace webcrypto |
OLD | NEW |