Chromium Code Reviews| 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 "jwk.h" | 5 #include "jwk.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <functional> | 8 #include <functional> |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 104 // | "HS384" | HMAC using SHA-384 hash algorithm | | 104 // | "HS384" | HMAC using SHA-384 hash algorithm | |
| 105 // | "HS512" | HMAC using SHA-512 hash algorithm | | 105 // | "HS512" | HMAC using SHA-512 hash algorithm | |
| 106 // | "RS1" | RSASSA using SHA-1 hash algorithm | 106 // | "RS1" | RSASSA using SHA-1 hash algorithm |
| 107 // | "RS256" | RSASSA using SHA-256 hash algorithm | | 107 // | "RS256" | RSASSA using SHA-256 hash algorithm | |
| 108 // | "RS384" | RSASSA using SHA-384 hash algorithm | | 108 // | "RS384" | RSASSA using SHA-384 hash algorithm | |
| 109 // | "RS512" | RSASSA using SHA-512 hash algorithm | | 109 // | "RS512" | RSASSA using SHA-512 hash algorithm | |
| 110 // +--------------+-------------------------------------------------------| | 110 // +--------------+-------------------------------------------------------| |
| 111 // | Key Management Algorithm | | 111 // | Key Management Algorithm | |
| 112 // +--------------+-------------------------------------------------------+ | 112 // +--------------+-------------------------------------------------------+ |
| 113 // | "RSA1_5" | RSAES-PKCS1-V1_5 [RFC3447] | | 113 // | "RSA1_5" | RSAES-PKCS1-V1_5 [RFC3447] | |
| 114 // | "RSA-OAEP" | RSAES using Optimal Asymmetric Encryption Padding | | 114 // | "RSA-OAEP" | RSAES using Optimal Asymmetric Encryption Padding | |
|
eroman
2014/05/16 20:29:51
Update this comment.
| |
| 115 // | | (OAEP) [RFC3447], with the default parameters | | 115 // | | (OAEP) [RFC3447], with the default parameters | |
| 116 // | | specified by RFC3447 in Section A.2.1 | | 116 // | | specified by RFC3447 in Section A.2.1 | |
| 117 // | "A128KW" | Advanced Encryption Standard (AES) Key Wrap Algorithm | | 117 // | "A128KW" | Advanced Encryption Standard (AES) Key Wrap Algorithm | |
| 118 // | | [RFC3394] using 128 bit keys | | 118 // | | [RFC3394] using 128 bit keys | |
| 119 // | "A192KW" | AES Key Wrap Algorithm using 192 bit keys | | 119 // | "A192KW" | AES Key Wrap Algorithm using 192 bit keys | |
| 120 // | "A256KW" | AES Key Wrap Algorithm using 256 bit keys | | 120 // | "A256KW" | AES Key Wrap Algorithm using 256 bit keys | |
| 121 // | "A128GCM" | AES in Galois/Counter Mode (GCM) [NIST.800-38D] using | | 121 // | "A128GCM" | AES in Galois/Counter Mode (GCM) [NIST.800-38D] using | |
| 122 // | | 128 bit keys | | 122 // | | 128 bit keys | |
| 123 // | "A192GCM" | AES GCM using 192 bit keys | | 123 // | "A192GCM" | AES GCM using 192 bit keys | |
| 124 // | "A256GCM" | AES GCM using 256 bit keys | | 124 // | "A256GCM" | AES GCM using 256 bit keys | |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 277 blink::WebCryptoAlgorithmIdSha384>); | 277 blink::WebCryptoAlgorithmIdSha384>); |
| 278 alg_to_info_["RS512"] = | 278 alg_to_info_["RS512"] = |
| 279 JwkAlgorithmInfo(&BindAlgorithmId<CreateRsaSsaImportAlgorithm, | 279 JwkAlgorithmInfo(&BindAlgorithmId<CreateRsaSsaImportAlgorithm, |
| 280 blink::WebCryptoAlgorithmIdSha512>); | 280 blink::WebCryptoAlgorithmIdSha512>); |
| 281 alg_to_info_["RSA1_5"] = JwkAlgorithmInfo( | 281 alg_to_info_["RSA1_5"] = JwkAlgorithmInfo( |
| 282 &BindAlgorithmId<CreateAlgorithm, | 282 &BindAlgorithmId<CreateAlgorithm, |
| 283 blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5>); | 283 blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5>); |
| 284 alg_to_info_["RSA-OAEP"] = | 284 alg_to_info_["RSA-OAEP"] = |
| 285 JwkAlgorithmInfo(&BindAlgorithmId<CreateRsaOaepImportAlgorithm, | 285 JwkAlgorithmInfo(&BindAlgorithmId<CreateRsaOaepImportAlgorithm, |
| 286 blink::WebCryptoAlgorithmIdSha1>); | 286 blink::WebCryptoAlgorithmIdSha1>); |
| 287 alg_to_info_["RSA-OAEP-256"] = | |
| 288 JwkAlgorithmInfo(&BindAlgorithmId<CreateRsaOaepImportAlgorithm, | |
| 289 blink::WebCryptoAlgorithmIdSha256>); | |
| 290 alg_to_info_["RSA-OAEP-384"] = | |
| 291 JwkAlgorithmInfo(&BindAlgorithmId<CreateRsaOaepImportAlgorithm, | |
| 292 blink::WebCryptoAlgorithmIdSha384>); | |
| 293 alg_to_info_["RSA-OAEP-512"] = | |
| 294 JwkAlgorithmInfo(&BindAlgorithmId<CreateRsaOaepImportAlgorithm, | |
| 295 blink::WebCryptoAlgorithmIdSha512>); | |
| 287 alg_to_info_["A128KW"] = JwkAlgorithmInfo( | 296 alg_to_info_["A128KW"] = JwkAlgorithmInfo( |
| 288 &BindAlgorithmId<CreateAlgorithm, blink::WebCryptoAlgorithmIdAesKw>, | 297 &BindAlgorithmId<CreateAlgorithm, blink::WebCryptoAlgorithmIdAesKw>, |
| 289 128); | 298 128); |
| 290 alg_to_info_["A192KW"] = JwkAlgorithmInfo( | 299 alg_to_info_["A192KW"] = JwkAlgorithmInfo( |
| 291 &BindAlgorithmId<CreateAlgorithm, blink::WebCryptoAlgorithmIdAesKw>, | 300 &BindAlgorithmId<CreateAlgorithm, blink::WebCryptoAlgorithmIdAesKw>, |
| 292 192); | 301 192); |
| 293 alg_to_info_["A256KW"] = JwkAlgorithmInfo( | 302 alg_to_info_["A256KW"] = JwkAlgorithmInfo( |
| 294 &BindAlgorithmId<CreateAlgorithm, blink::WebCryptoAlgorithmIdAesKw>, | 303 &BindAlgorithmId<CreateAlgorithm, blink::WebCryptoAlgorithmIdAesKw>, |
| 295 256); | 304 256); |
| 296 alg_to_info_["A128GCM"] = JwkAlgorithmInfo( | 305 alg_to_info_["A128GCM"] = JwkAlgorithmInfo( |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 558 switch (algorithm.id()) { | 567 switch (algorithm.id()) { |
| 559 case blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5: | 568 case blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5: |
| 560 jwk_dict->SetString("alg", "RSA1_5"); | 569 jwk_dict->SetString("alg", "RSA1_5"); |
| 561 break; | 570 break; |
| 562 default: | 571 default: |
| 563 NOTREACHED(); | 572 NOTREACHED(); |
| 564 return Status::ErrorUnexpected(); | 573 return Status::ErrorUnexpected(); |
| 565 } | 574 } |
| 566 break; | 575 break; |
| 567 case blink::WebCryptoKeyAlgorithmParamsTypeRsaHashed: | 576 case blink::WebCryptoKeyAlgorithmParamsTypeRsaHashed: |
| 568 switch (algorithm.rsaHashedParams()->hash().id()) { | 577 switch (algorithm.id()) { |
| 569 case blink::WebCryptoAlgorithmIdRsaOaep: | 578 case blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5: { |
| 570 jwk_dict->SetString("alg", "RSA-OAEP"); | 579 switch (algorithm.rsaHashedParams()->hash().id()) { |
|
Ryan Sleevi
2014/05/16 05:17:22
LULWUT
| |
| 580 case blink::WebCryptoAlgorithmIdSha1: | |
| 581 jwk_dict->SetString("alg", "RS1"); | |
| 582 break; | |
| 583 case blink::WebCryptoAlgorithmIdSha256: | |
| 584 jwk_dict->SetString("alg", "RS256"); | |
| 585 break; | |
| 586 case blink::WebCryptoAlgorithmIdSha384: | |
| 587 jwk_dict->SetString("alg", "RS384"); | |
| 588 break; | |
| 589 case blink::WebCryptoAlgorithmIdSha512: | |
| 590 jwk_dict->SetString("alg", "RS512"); | |
| 591 break; | |
| 592 default: | |
| 593 NOTREACHED(); | |
| 594 return Status::ErrorUnexpected(); | |
| 595 } | |
| 571 break; | 596 break; |
| 572 case blink::WebCryptoAlgorithmIdSha1: | 597 } |
| 573 jwk_dict->SetString("alg", "RS1"); | 598 case blink::WebCryptoAlgorithmIdRsaOaep: { |
| 599 switch (algorithm.rsaHashedParams()->hash().id()) { | |
| 600 case blink::WebCryptoAlgorithmIdSha1: | |
| 601 jwk_dict->SetString("alg", "RSA-OAEP"); | |
| 602 break; | |
| 603 case blink::WebCryptoAlgorithmIdSha256: | |
| 604 jwk_dict->SetString("alg", "RSA-OAEP-256"); | |
| 605 break; | |
| 606 case blink::WebCryptoAlgorithmIdSha384: | |
| 607 jwk_dict->SetString("alg", "RSA-OAEP-384"); | |
| 608 break; | |
| 609 case blink::WebCryptoAlgorithmIdSha512: | |
| 610 jwk_dict->SetString("alg", "RSA-OAEP-512"); | |
| 611 break; | |
| 612 default: | |
| 613 NOTREACHED(); | |
| 614 return Status::ErrorUnexpected(); | |
| 615 } | |
| 574 break; | 616 break; |
| 575 case blink::WebCryptoAlgorithmIdSha256: | 617 } |
| 576 jwk_dict->SetString("alg", "RS256"); | |
| 577 break; | |
| 578 case blink::WebCryptoAlgorithmIdSha384: | |
| 579 jwk_dict->SetString("alg", "RS384"); | |
| 580 break; | |
| 581 case blink::WebCryptoAlgorithmIdSha512: | |
| 582 jwk_dict->SetString("alg", "RS512"); | |
| 583 break; | |
| 584 default: | 618 default: |
| 585 NOTREACHED(); | 619 NOTREACHED(); |
| 586 return Status::ErrorUnexpected(); | 620 return Status::ErrorUnexpected(); |
| 587 } | 621 } |
| 588 break; | 622 break; |
| 589 default: | 623 default: |
| 590 return Status::ErrorUnsupported(); | 624 return Status::ErrorUnsupported(); |
| 591 } | 625 } |
| 592 return Status::Success(); | 626 return Status::Success(); |
| 593 } | 627 } |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 826 | 860 |
| 827 std::string json; | 861 std::string json; |
| 828 base::JSONWriter::Write(&jwk_dict, &json); | 862 base::JSONWriter::Write(&jwk_dict, &json); |
| 829 buffer->assign(json.data(), json.data() + json.size()); | 863 buffer->assign(json.data(), json.data() + json.size()); |
| 830 return Status::Success(); | 864 return Status::Success(); |
| 831 } | 865 } |
| 832 | 866 |
| 833 } // namespace webcrypto | 867 } // namespace webcrypto |
| 834 | 868 |
| 835 } // namespace content | 869 } // namespace content |
| OLD | NEW |