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 "content/child/webcrypto/platform_crypto.h" | 5 #include "content/child/webcrypto/platform_crypto.h" |
6 | 6 |
7 #include <cryptohi.h> | 7 #include <cryptohi.h> |
8 #include <pk11pub.h> | 8 #include <pk11pub.h> |
9 #include <sechash.h> | 9 #include <sechash.h> |
10 | 10 |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 // NSS requires non-const data even though it is just for input. | 174 // NSS requires non-const data even though it is just for input. |
175 const_cast<unsigned char*>(buffer.bytes()), buffer.byte_length()}; | 175 const_cast<unsigned char*>(buffer.bytes()), buffer.byte_length()}; |
176 return item; | 176 return item; |
177 } | 177 } |
178 | 178 |
179 HASH_HashType WebCryptoAlgorithmToNSSHashType( | 179 HASH_HashType WebCryptoAlgorithmToNSSHashType( |
180 blink::WebCryptoAlgorithmId algorithm) { | 180 blink::WebCryptoAlgorithmId algorithm) { |
181 switch (algorithm) { | 181 switch (algorithm) { |
182 case blink::WebCryptoAlgorithmIdSha1: | 182 case blink::WebCryptoAlgorithmIdSha1: |
183 return HASH_AlgSHA1; | 183 return HASH_AlgSHA1; |
184 case blink::WebCryptoAlgorithmIdSha224: | |
185 return HASH_AlgSHA224; | |
186 case blink::WebCryptoAlgorithmIdSha256: | 184 case blink::WebCryptoAlgorithmIdSha256: |
187 return HASH_AlgSHA256; | 185 return HASH_AlgSHA256; |
188 case blink::WebCryptoAlgorithmIdSha384: | 186 case blink::WebCryptoAlgorithmIdSha384: |
189 return HASH_AlgSHA384; | 187 return HASH_AlgSHA384; |
190 case blink::WebCryptoAlgorithmIdSha512: | 188 case blink::WebCryptoAlgorithmIdSha512: |
191 return HASH_AlgSHA512; | 189 return HASH_AlgSHA512; |
192 default: | 190 default: |
193 // Not a digest algorithm. | 191 // Not a digest algorithm. |
194 return HASH_AlgNULL; | 192 return HASH_AlgNULL; |
195 } | 193 } |
196 } | 194 } |
197 | 195 |
198 CK_MECHANISM_TYPE WebCryptoHashToHMACMechanism( | 196 CK_MECHANISM_TYPE WebCryptoHashToHMACMechanism( |
199 const blink::WebCryptoAlgorithm& algorithm) { | 197 const blink::WebCryptoAlgorithm& algorithm) { |
200 switch (algorithm.id()) { | 198 switch (algorithm.id()) { |
201 case blink::WebCryptoAlgorithmIdSha1: | 199 case blink::WebCryptoAlgorithmIdSha1: |
202 return CKM_SHA_1_HMAC; | 200 return CKM_SHA_1_HMAC; |
203 case blink::WebCryptoAlgorithmIdSha224: | |
204 return CKM_SHA224_HMAC; | |
205 case blink::WebCryptoAlgorithmIdSha256: | 201 case blink::WebCryptoAlgorithmIdSha256: |
206 return CKM_SHA256_HMAC; | 202 return CKM_SHA256_HMAC; |
207 case blink::WebCryptoAlgorithmIdSha384: | 203 case blink::WebCryptoAlgorithmIdSha384: |
208 return CKM_SHA384_HMAC; | 204 return CKM_SHA384_HMAC; |
209 case blink::WebCryptoAlgorithmIdSha512: | 205 case blink::WebCryptoAlgorithmIdSha512: |
210 return CKM_SHA512_HMAC; | 206 return CKM_SHA512_HMAC; |
211 default: | 207 default: |
212 // Not a supported algorithm. | 208 // Not a supported algorithm. |
213 return CKM_INVALID_MECHANISM; | 209 return CKM_INVALID_MECHANISM; |
214 } | 210 } |
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 const blink::WebCryptoAlgorithm& hash, | 797 const blink::WebCryptoAlgorithm& hash, |
802 const CryptoData& data, | 798 const CryptoData& data, |
803 blink::WebArrayBuffer* buffer) { | 799 blink::WebArrayBuffer* buffer) { |
804 // Pick the NSS signing algorithm by combining RSA-SSA (RSA PKCS1) and the | 800 // Pick the NSS signing algorithm by combining RSA-SSA (RSA PKCS1) and the |
805 // inner hash of the input Web Crypto algorithm. | 801 // inner hash of the input Web Crypto algorithm. |
806 SECOidTag sign_alg_tag; | 802 SECOidTag sign_alg_tag; |
807 switch (hash.id()) { | 803 switch (hash.id()) { |
808 case blink::WebCryptoAlgorithmIdSha1: | 804 case blink::WebCryptoAlgorithmIdSha1: |
809 sign_alg_tag = SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION; | 805 sign_alg_tag = SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION; |
810 break; | 806 break; |
811 case blink::WebCryptoAlgorithmIdSha224: | |
812 sign_alg_tag = SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION; | |
813 break; | |
814 case blink::WebCryptoAlgorithmIdSha256: | 807 case blink::WebCryptoAlgorithmIdSha256: |
815 sign_alg_tag = SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION; | 808 sign_alg_tag = SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION; |
816 break; | 809 break; |
817 case blink::WebCryptoAlgorithmIdSha384: | 810 case blink::WebCryptoAlgorithmIdSha384: |
818 sign_alg_tag = SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION; | 811 sign_alg_tag = SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION; |
819 break; | 812 break; |
820 case blink::WebCryptoAlgorithmIdSha512: | 813 case blink::WebCryptoAlgorithmIdSha512: |
821 sign_alg_tag = SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION; | 814 sign_alg_tag = SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION; |
822 break; | 815 break; |
823 default: | 816 default: |
(...skipping 18 matching lines...) Expand all Loading... |
842 const CryptoData& signature, | 835 const CryptoData& signature, |
843 const CryptoData& data, | 836 const CryptoData& data, |
844 bool* signature_match) { | 837 bool* signature_match) { |
845 const SECItem signature_item = MakeSECItemForBuffer(signature); | 838 const SECItem signature_item = MakeSECItemForBuffer(signature); |
846 | 839 |
847 SECOidTag hash_alg_tag; | 840 SECOidTag hash_alg_tag; |
848 switch (hash.id()) { | 841 switch (hash.id()) { |
849 case blink::WebCryptoAlgorithmIdSha1: | 842 case blink::WebCryptoAlgorithmIdSha1: |
850 hash_alg_tag = SEC_OID_SHA1; | 843 hash_alg_tag = SEC_OID_SHA1; |
851 break; | 844 break; |
852 case blink::WebCryptoAlgorithmIdSha224: | |
853 hash_alg_tag = SEC_OID_SHA224; | |
854 break; | |
855 case blink::WebCryptoAlgorithmIdSha256: | 845 case blink::WebCryptoAlgorithmIdSha256: |
856 hash_alg_tag = SEC_OID_SHA256; | 846 hash_alg_tag = SEC_OID_SHA256; |
857 break; | 847 break; |
858 case blink::WebCryptoAlgorithmIdSha384: | 848 case blink::WebCryptoAlgorithmIdSha384: |
859 hash_alg_tag = SEC_OID_SHA384; | 849 hash_alg_tag = SEC_OID_SHA384; |
860 break; | 850 break; |
861 case blink::WebCryptoAlgorithmIdSha512: | 851 case blink::WebCryptoAlgorithmIdSha512: |
862 hash_alg_tag = SEC_OID_SHA512; | 852 hash_alg_tag = SEC_OID_SHA512; |
863 break; | 853 break; |
864 default: | 854 default: |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 key_algorithm, | 1191 key_algorithm, |
1202 usage_mask); | 1192 usage_mask); |
1203 return Status::Success(); | 1193 return Status::Success(); |
1204 } | 1194 } |
1205 | 1195 |
1206 } // namespace platform | 1196 } // namespace platform |
1207 | 1197 |
1208 } // namespace webcrypto | 1198 } // namespace webcrypto |
1209 | 1199 |
1210 } // namespace content | 1200 } // namespace content |
OLD | NEW |