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 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 if (!dict->Get(path, &value)) | 443 if (!dict->Get(path, &value)) |
444 return Status::Success(); | 444 return Status::Success(); |
445 | 445 |
446 if (!value->GetAsBoolean(result)) | 446 if (!value->GetAsBoolean(result)) |
447 return Status::ErrorJwkPropertyWrongType(path, "boolean"); | 447 return Status::ErrorJwkPropertyWrongType(path, "boolean"); |
448 | 448 |
449 *property_exists = true; | 449 *property_exists = true; |
450 return Status::Success(); | 450 return Status::Success(); |
451 } | 451 } |
452 | 452 |
453 // Returns true if the set bits in b make up a subset of the set bits in a. | |
454 bool ContainsKeyUsages(blink::WebCryptoKeyUsageMask a, | |
455 blink::WebCryptoKeyUsageMask b) { | |
456 return (a & b) == b; | |
457 } | |
458 | |
459 // Writes a secret/symmetric key to a JWK dictionary. | 453 // Writes a secret/symmetric key to a JWK dictionary. |
460 void WriteSecretKey(const std::vector<uint8>& raw_key, | 454 void WriteSecretKey(const std::vector<uint8>& raw_key, |
461 base::DictionaryValue* jwk_dict) { | 455 base::DictionaryValue* jwk_dict) { |
462 DCHECK(jwk_dict); | 456 DCHECK(jwk_dict); |
463 jwk_dict->SetString("kty", "oct"); | 457 jwk_dict->SetString("kty", "oct"); |
464 // For a secret/symmetric key, the only extra JWK field is 'k', containing the | 458 // For a secret/symmetric key, the only extra JWK field is 'k', containing the |
465 // base64url encoding of the raw key. | 459 // base64url encoding of the raw key. |
466 const base::StringPiece key_str( | 460 const base::StringPiece key_str( |
467 reinterpret_cast<const char*>(Uint8VectorStart(raw_key)), raw_key.size()); | 461 reinterpret_cast<const char*>(Uint8VectorStart(raw_key)), raw_key.size()); |
468 jwk_dict->SetString("k", Base64EncodeUrlSafe(key_str)); | 462 jwk_dict->SetString("k", Base64EncodeUrlSafe(key_str)); |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
826 | 820 |
827 std::string json; | 821 std::string json; |
828 base::JSONWriter::Write(&jwk_dict, &json); | 822 base::JSONWriter::Write(&jwk_dict, &json); |
829 buffer->assign(json.data(), json.data() + json.size()); | 823 buffer->assign(json.data(), json.data() + json.size()); |
830 return Status::Success(); | 824 return Status::Success(); |
831 } | 825 } |
832 | 826 |
833 } // namespace webcrypto | 827 } // namespace webcrypto |
834 | 828 |
835 } // namespace content | 829 } // namespace content |
OLD | NEW |