Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: Source/bindings/core/v8/SerializedScriptValue.cpp

Issue 692233004: Cleanup: Remove some unnecessary blink:: prefixes. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 498
499 void writeFileListIndex(const Vector<int>& blobIndices) 499 void writeFileListIndex(const Vector<int>& blobIndices)
500 { 500 {
501 append(FileListIndexTag); 501 append(FileListIndexTag);
502 uint32_t length = blobIndices.size(); 502 uint32_t length = blobIndices.size();
503 doWriteUint32(length); 503 doWriteUint32(length);
504 for (unsigned i = 0; i < length; ++i) 504 for (unsigned i = 0; i < length; ++i)
505 doWriteUint32(blobIndices[i]); 505 doWriteUint32(blobIndices[i]);
506 } 506 }
507 507
508 bool writeCryptoKey(const blink::WebCryptoKey& key) 508 bool writeCryptoKey(const WebCryptoKey& key)
509 { 509 {
510 append(static_cast<uint8_t>(CryptoKeyTag)); 510 append(static_cast<uint8_t>(CryptoKeyTag));
511 511
512 switch (key.algorithm().paramsType()) { 512 switch (key.algorithm().paramsType()) {
513 case blink::WebCryptoKeyAlgorithmParamsTypeAes: 513 case WebCryptoKeyAlgorithmParamsTypeAes:
514 doWriteAesKey(key); 514 doWriteAesKey(key);
515 break; 515 break;
516 case blink::WebCryptoKeyAlgorithmParamsTypeHmac: 516 case WebCryptoKeyAlgorithmParamsTypeHmac:
517 doWriteHmacKey(key); 517 doWriteHmacKey(key);
518 break; 518 break;
519 case blink::WebCryptoKeyAlgorithmParamsTypeRsaHashed: 519 case WebCryptoKeyAlgorithmParamsTypeRsaHashed:
520 doWriteRsaHashedKey(key); 520 doWriteRsaHashedKey(key);
521 break; 521 break;
522 case blink::WebCryptoKeyAlgorithmParamsTypeNone: 522 case WebCryptoKeyAlgorithmParamsTypeNone:
523 ASSERT_NOT_REACHED(); 523 ASSERT_NOT_REACHED();
524 return false; 524 return false;
525 } 525 }
526 526
527 doWriteKeyUsages(key.usages(), key.extractable()); 527 doWriteKeyUsages(key.usages(), key.extractable());
528 528
529 blink::WebVector<uint8_t> keyData; 529 WebVector<uint8_t> keyData;
530 if (!blink::Platform::current()->crypto()->serializeKeyForClone(key, key Data)) 530 if (!Platform::current()->crypto()->serializeKeyForClone(key, keyData))
531 return false; 531 return false;
532 532
533 doWriteUint32(keyData.size()); 533 doWriteUint32(keyData.size());
534 append(keyData.data(), keyData.size()); 534 append(keyData.data(), keyData.size());
535 return true; 535 return true;
536 } 536 }
537 537
538 void writeArrayBuffer(const ArrayBuffer& arrayBuffer) 538 void writeArrayBuffer(const ArrayBuffer& arrayBuffer)
539 { 539 {
540 append(ArrayBufferTag); 540 append(ArrayBufferTag);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 doWriteUint32(static_cast<uint32_t>(length)); 701 doWriteUint32(static_cast<uint32_t>(length));
702 append(reinterpret_cast<const uint8_t*>(data), length); 702 append(reinterpret_cast<const uint8_t*>(data), length);
703 } 703 }
704 704
705 void doWriteWebCoreString(const String& string) 705 void doWriteWebCoreString(const String& string)
706 { 706 {
707 StringUTF8Adaptor stringUTF8(string); 707 StringUTF8Adaptor stringUTF8(string);
708 doWriteString(stringUTF8.data(), stringUTF8.length()); 708 doWriteString(stringUTF8.data(), stringUTF8.length());
709 } 709 }
710 710
711 void doWriteHmacKey(const blink::WebCryptoKey& key) 711 void doWriteHmacKey(const WebCryptoKey& key)
712 { 712 {
713 ASSERT(key.algorithm().paramsType() == blink::WebCryptoKeyAlgorithmParam sTypeHmac); 713 ASSERT(key.algorithm().paramsType() == WebCryptoKeyAlgorithmParamsTypeHm ac);
714 714
715 append(static_cast<uint8_t>(HmacKeyTag)); 715 append(static_cast<uint8_t>(HmacKeyTag));
716 ASSERT(!(key.algorithm().hmacParams()->lengthBits() % 8)); 716 ASSERT(!(key.algorithm().hmacParams()->lengthBits() % 8));
717 doWriteUint32(key.algorithm().hmacParams()->lengthBits() / 8); 717 doWriteUint32(key.algorithm().hmacParams()->lengthBits() / 8);
718 doWriteAlgorithmId(key.algorithm().hmacParams()->hash().id()); 718 doWriteAlgorithmId(key.algorithm().hmacParams()->hash().id());
719 } 719 }
720 720
721 void doWriteAesKey(const blink::WebCryptoKey& key) 721 void doWriteAesKey(const WebCryptoKey& key)
722 { 722 {
723 ASSERT(key.algorithm().paramsType() == blink::WebCryptoKeyAlgorithmParam sTypeAes); 723 ASSERT(key.algorithm().paramsType() == WebCryptoKeyAlgorithmParamsTypeAe s);
724 724
725 append(static_cast<uint8_t>(AesKeyTag)); 725 append(static_cast<uint8_t>(AesKeyTag));
726 doWriteAlgorithmId(key.algorithm().id()); 726 doWriteAlgorithmId(key.algorithm().id());
727 // Converting the key length from bits to bytes is lossless and makes 727 // Converting the key length from bits to bytes is lossless and makes
728 // it fit in 1 byte. 728 // it fit in 1 byte.
729 ASSERT(!(key.algorithm().aesParams()->lengthBits() % 8)); 729 ASSERT(!(key.algorithm().aesParams()->lengthBits() % 8));
730 doWriteUint32(key.algorithm().aesParams()->lengthBits() / 8); 730 doWriteUint32(key.algorithm().aesParams()->lengthBits() / 8);
731 } 731 }
732 732
733 void doWriteRsaHashedKey(const blink::WebCryptoKey& key) 733 void doWriteRsaHashedKey(const WebCryptoKey& key)
734 { 734 {
735 ASSERT(key.algorithm().rsaHashedParams()); 735 ASSERT(key.algorithm().rsaHashedParams());
736 append(static_cast<uint8_t>(RsaHashedKeyTag)); 736 append(static_cast<uint8_t>(RsaHashedKeyTag));
737 737
738 doWriteAlgorithmId(key.algorithm().id()); 738 doWriteAlgorithmId(key.algorithm().id());
739 739
740 switch (key.type()) { 740 switch (key.type()) {
741 case blink::WebCryptoKeyTypePublic: 741 case WebCryptoKeyTypePublic:
742 doWriteUint32(PublicKeyType); 742 doWriteUint32(PublicKeyType);
743 break; 743 break;
744 case blink::WebCryptoKeyTypePrivate: 744 case WebCryptoKeyTypePrivate:
745 doWriteUint32(PrivateKeyType); 745 doWriteUint32(PrivateKeyType);
746 break; 746 break;
747 case blink::WebCryptoKeyTypeSecret: 747 case WebCryptoKeyTypeSecret:
748 ASSERT_NOT_REACHED(); 748 ASSERT_NOT_REACHED();
749 } 749 }
750 750
751 const blink::WebCryptoRsaHashedKeyAlgorithmParams* params = key.algorith m().rsaHashedParams(); 751 const WebCryptoRsaHashedKeyAlgorithmParams* params = key.algorithm().rsa HashedParams();
752 doWriteUint32(params->modulusLengthBits()); 752 doWriteUint32(params->modulusLengthBits());
753 doWriteUint32(params->publicExponent().size()); 753 doWriteUint32(params->publicExponent().size());
754 append(params->publicExponent().data(), params->publicExponent().size()) ; 754 append(params->publicExponent().data(), params->publicExponent().size()) ;
755 doWriteAlgorithmId(key.algorithm().rsaHashedParams()->hash().id()); 755 doWriteAlgorithmId(key.algorithm().rsaHashedParams()->hash().id());
756 } 756 }
757 757
758 void doWriteAlgorithmId(blink::WebCryptoAlgorithmId id) 758 void doWriteAlgorithmId(WebCryptoAlgorithmId id)
759 { 759 {
760 switch (id) { 760 switch (id) {
761 case blink::WebCryptoAlgorithmIdAesCbc: 761 case WebCryptoAlgorithmIdAesCbc:
762 return doWriteUint32(AesCbcTag); 762 return doWriteUint32(AesCbcTag);
763 case blink::WebCryptoAlgorithmIdHmac: 763 case WebCryptoAlgorithmIdHmac:
764 return doWriteUint32(HmacTag); 764 return doWriteUint32(HmacTag);
765 case blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5: 765 case WebCryptoAlgorithmIdRsaSsaPkcs1v1_5:
766 return doWriteUint32(RsaSsaPkcs1v1_5Tag); 766 return doWriteUint32(RsaSsaPkcs1v1_5Tag);
767 case blink::WebCryptoAlgorithmIdSha1: 767 case WebCryptoAlgorithmIdSha1:
768 return doWriteUint32(Sha1Tag); 768 return doWriteUint32(Sha1Tag);
769 case blink::WebCryptoAlgorithmIdSha256: 769 case WebCryptoAlgorithmIdSha256:
770 return doWriteUint32(Sha256Tag); 770 return doWriteUint32(Sha256Tag);
771 case blink::WebCryptoAlgorithmIdSha384: 771 case WebCryptoAlgorithmIdSha384:
772 return doWriteUint32(Sha384Tag); 772 return doWriteUint32(Sha384Tag);
773 case blink::WebCryptoAlgorithmIdSha512: 773 case WebCryptoAlgorithmIdSha512:
774 return doWriteUint32(Sha512Tag); 774 return doWriteUint32(Sha512Tag);
775 case blink::WebCryptoAlgorithmIdAesGcm: 775 case WebCryptoAlgorithmIdAesGcm:
776 return doWriteUint32(AesGcmTag); 776 return doWriteUint32(AesGcmTag);
777 case blink::WebCryptoAlgorithmIdRsaOaep: 777 case WebCryptoAlgorithmIdRsaOaep:
778 return doWriteUint32(RsaOaepTag); 778 return doWriteUint32(RsaOaepTag);
779 case blink::WebCryptoAlgorithmIdAesCtr: 779 case WebCryptoAlgorithmIdAesCtr:
780 return doWriteUint32(AesCtrTag); 780 return doWriteUint32(AesCtrTag);
781 case blink::WebCryptoAlgorithmIdAesKw: 781 case WebCryptoAlgorithmIdAesKw:
782 return doWriteUint32(AesKwTag); 782 return doWriteUint32(AesKwTag);
783 case blink::WebCryptoAlgorithmIdRsaPss: 783 case WebCryptoAlgorithmIdRsaPss:
784 return doWriteUint32(RsaPssTag); 784 return doWriteUint32(RsaPssTag);
785 } 785 }
786 ASSERT_NOT_REACHED(); 786 ASSERT_NOT_REACHED();
787 } 787 }
788 788
789 void doWriteKeyUsages(const blink::WebCryptoKeyUsageMask usages, bool extrac table) 789 void doWriteKeyUsages(const WebCryptoKeyUsageMask usages, bool extractable)
790 { 790 {
791 // Reminder to update this when adding new key usages. 791 // Reminder to update this when adding new key usages.
792 COMPILE_ASSERT(blink::EndOfWebCryptoKeyUsage == (1 << 7) + 1, UpdateMe); 792 COMPILE_ASSERT(EndOfWebCryptoKeyUsage == (1 << 7) + 1, UpdateMe);
793 793
794 uint32_t value = 0; 794 uint32_t value = 0;
795 795
796 if (extractable) 796 if (extractable)
797 value |= ExtractableUsage; 797 value |= ExtractableUsage;
798 798
799 if (usages & blink::WebCryptoKeyUsageEncrypt) 799 if (usages & WebCryptoKeyUsageEncrypt)
800 value |= EncryptUsage; 800 value |= EncryptUsage;
801 if (usages & blink::WebCryptoKeyUsageDecrypt) 801 if (usages & WebCryptoKeyUsageDecrypt)
802 value |= DecryptUsage; 802 value |= DecryptUsage;
803 if (usages & blink::WebCryptoKeyUsageSign) 803 if (usages & WebCryptoKeyUsageSign)
804 value |= SignUsage; 804 value |= SignUsage;
805 if (usages & blink::WebCryptoKeyUsageVerify) 805 if (usages & WebCryptoKeyUsageVerify)
806 value |= VerifyUsage; 806 value |= VerifyUsage;
807 if (usages & blink::WebCryptoKeyUsageDeriveKey) 807 if (usages & WebCryptoKeyUsageDeriveKey)
808 value |= DeriveKeyUsage; 808 value |= DeriveKeyUsage;
809 if (usages & blink::WebCryptoKeyUsageWrapKey) 809 if (usages & WebCryptoKeyUsageWrapKey)
810 value |= WrapKeyUsage; 810 value |= WrapKeyUsage;
811 if (usages & blink::WebCryptoKeyUsageUnwrapKey) 811 if (usages & WebCryptoKeyUsageUnwrapKey)
812 value |= UnwrapKeyUsage; 812 value |= UnwrapKeyUsage;
813 if (usages & blink::WebCryptoKeyUsageDeriveBits) 813 if (usages & WebCryptoKeyUsageDeriveBits)
814 value |= DeriveBitsUsage; 814 value |= DeriveBitsUsage;
815 815
816 doWriteUint32(value); 816 doWriteUint32(value);
817 } 817 }
818 818
819 int bytesNeededToWireEncode(uint32_t value) 819 int bytesNeededToWireEncode(uint32_t value)
820 { 820 {
821 int bytes = 1; 821 int bytes = 1;
822 while (true) { 822 while (true) {
823 value >>= varIntShift; 823 value >>= varIntShift;
(...skipping 1329 matching lines...) Expand 10 before | Expand all | Expand 10 after
2153 if (m_version < 3) 2153 if (m_version < 3)
2154 return false; 2154 return false;
2155 Blob* blob = nullptr; 2155 Blob* blob = nullptr;
2156 if (isIndexed) { 2156 if (isIndexed) {
2157 if (m_version < 6) 2157 if (m_version < 6)
2158 return false; 2158 return false;
2159 ASSERT(m_blobInfo); 2159 ASSERT(m_blobInfo);
2160 uint32_t index; 2160 uint32_t index;
2161 if (!doReadUint32(&index) || index >= m_blobInfo->size()) 2161 if (!doReadUint32(&index) || index >= m_blobInfo->size())
2162 return false; 2162 return false;
2163 const blink::WebBlobInfo& info = (*m_blobInfo)[index]; 2163 const WebBlobInfo& info = (*m_blobInfo)[index];
2164 blob = Blob::create(getOrCreateBlobDataHandle(info.uuid(), info.type (), info.size())); 2164 blob = Blob::create(getOrCreateBlobDataHandle(info.uuid(), info.type (), info.size()));
2165 } else { 2165 } else {
2166 ASSERT(!m_blobInfo); 2166 ASSERT(!m_blobInfo);
2167 String uuid; 2167 String uuid;
2168 String type; 2168 String type;
2169 uint64_t size; 2169 uint64_t size;
2170 ASSERT(!m_blobInfo); 2170 ASSERT(!m_blobInfo);
2171 if (!readWebCoreString(&uuid)) 2171 if (!readWebCoreString(&uuid))
2172 return false; 2172 return false;
2173 if (!readWebCoreString(&type)) 2173 if (!readWebCoreString(&type))
(...skipping 10 matching lines...) Expand all
2184 { 2184 {
2185 uint32_t type; 2185 uint32_t type;
2186 String name; 2186 String name;
2187 String url; 2187 String url;
2188 if (!doReadUint32(&type)) 2188 if (!doReadUint32(&type))
2189 return false; 2189 return false;
2190 if (!readWebCoreString(&name)) 2190 if (!readWebCoreString(&name))
2191 return false; 2191 return false;
2192 if (!readWebCoreString(&url)) 2192 if (!readWebCoreString(&url))
2193 return false; 2193 return false;
2194 DOMFileSystem* fs = DOMFileSystem::create(m_scriptState->executionContex t(), name, static_cast<blink::FileSystemType>(type), KURL(ParsedURLString, url)) ; 2194 DOMFileSystem* fs = DOMFileSystem::create(m_scriptState->executionContex t(), name, static_cast<FileSystemType>(type), KURL(ParsedURLString, url));
2195 *value = toV8(fs, m_scriptState->context()->Global(), isolate()); 2195 *value = toV8(fs, m_scriptState->context()->Global(), isolate());
2196 return true; 2196 return true;
2197 } 2197 }
2198 2198
2199 bool readFile(v8::Handle<v8::Value>* value, bool isIndexed) 2199 bool readFile(v8::Handle<v8::Value>* value, bool isIndexed)
2200 { 2200 {
2201 File* file = nullptr; 2201 File* file = nullptr;
2202 if (isIndexed) { 2202 if (isIndexed) {
2203 if (m_version < 6) 2203 if (m_version < 6)
2204 return false; 2204 return false;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2236 *value = toV8(fileList, m_scriptState->context()->Global(), isolate()); 2236 *value = toV8(fileList, m_scriptState->context()->Global(), isolate());
2237 return true; 2237 return true;
2238 } 2238 }
2239 2239
2240 bool readCryptoKey(v8::Handle<v8::Value>* value) 2240 bool readCryptoKey(v8::Handle<v8::Value>* value)
2241 { 2241 {
2242 uint32_t rawKeyType; 2242 uint32_t rawKeyType;
2243 if (!doReadUint32(&rawKeyType)) 2243 if (!doReadUint32(&rawKeyType))
2244 return false; 2244 return false;
2245 2245
2246 blink::WebCryptoKeyAlgorithm algorithm; 2246 WebCryptoKeyAlgorithm algorithm;
2247 blink::WebCryptoKeyType type = blink::WebCryptoKeyTypeSecret; 2247 WebCryptoKeyType type = WebCryptoKeyTypeSecret;
2248 2248
2249 switch (static_cast<CryptoKeySubTag>(rawKeyType)) { 2249 switch (static_cast<CryptoKeySubTag>(rawKeyType)) {
2250 case AesKeyTag: 2250 case AesKeyTag:
2251 if (!doReadAesKey(algorithm, type)) 2251 if (!doReadAesKey(algorithm, type))
2252 return false; 2252 return false;
2253 break; 2253 break;
2254 case HmacKeyTag: 2254 case HmacKeyTag:
2255 if (!doReadHmacKey(algorithm, type)) 2255 if (!doReadHmacKey(algorithm, type))
2256 return false; 2256 return false;
2257 break; 2257 break;
2258 case RsaHashedKeyTag: 2258 case RsaHashedKeyTag:
2259 if (!doReadRsaHashedKey(algorithm, type)) 2259 if (!doReadRsaHashedKey(algorithm, type))
2260 return false; 2260 return false;
2261 break; 2261 break;
2262 default: 2262 default:
2263 return false; 2263 return false;
2264 } 2264 }
2265 2265
2266 blink::WebCryptoKeyUsageMask usages; 2266 WebCryptoKeyUsageMask usages;
2267 bool extractable; 2267 bool extractable;
2268 if (!doReadKeyUsages(usages, extractable)) 2268 if (!doReadKeyUsages(usages, extractable))
2269 return false; 2269 return false;
2270 2270
2271 uint32_t keyDataLength; 2271 uint32_t keyDataLength;
2272 if (!doReadUint32(&keyDataLength)) 2272 if (!doReadUint32(&keyDataLength))
2273 return false; 2273 return false;
2274 2274
2275 if (m_position + keyDataLength > m_length) 2275 if (m_position + keyDataLength > m_length)
2276 return false; 2276 return false;
2277 2277
2278 const uint8_t* keyData = m_buffer + m_position; 2278 const uint8_t* keyData = m_buffer + m_position;
2279 m_position += keyDataLength; 2279 m_position += keyDataLength;
2280 2280
2281 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 2281 WebCryptoKey key = WebCryptoKey::createNull();
2282 if (!blink::Platform::current()->crypto()->deserializeKeyForClone( 2282 if (!Platform::current()->crypto()->deserializeKeyForClone(
2283 algorithm, type, extractable, usages, keyData, keyDataLength, key)) { 2283 algorithm, type, extractable, usages, keyData, keyDataLength, key)) {
2284 return false; 2284 return false;
2285 } 2285 }
2286 2286
2287 *value = toV8(CryptoKey::create(key), m_scriptState->context()->Global() , isolate()); 2287 *value = toV8(CryptoKey::create(key), m_scriptState->context()->Global() , isolate());
2288 return true; 2288 return true;
2289 } 2289 }
2290 2290
2291 File* readFileHelper() 2291 File* readFileHelper()
2292 { 2292 {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
2387 // the blob in the src process happens to still exist at the time the de st process is deserializing. 2387 // the blob in the src process happens to still exist at the time the de st process is deserializing.
2388 // For example in sharedWorker.postMessage(...). 2388 // For example in sharedWorker.postMessage(...).
2389 BlobDataHandleMap::const_iterator it = m_blobDataHandles.find(uuid); 2389 BlobDataHandleMap::const_iterator it = m_blobDataHandles.find(uuid);
2390 if (it != m_blobDataHandles.end()) { 2390 if (it != m_blobDataHandles.end()) {
2391 // make assertions about type and size? 2391 // make assertions about type and size?
2392 return it->value; 2392 return it->value;
2393 } 2393 }
2394 return BlobDataHandle::create(uuid, type, size); 2394 return BlobDataHandle::create(uuid, type, size);
2395 } 2395 }
2396 2396
2397 bool doReadHmacKey(blink::WebCryptoKeyAlgorithm& algorithm, blink::WebCrypto KeyType& type) 2397 bool doReadHmacKey(WebCryptoKeyAlgorithm& algorithm, WebCryptoKeyType& type)
2398 { 2398 {
2399 uint32_t lengthBytes; 2399 uint32_t lengthBytes;
2400 if (!doReadUint32(&lengthBytes)) 2400 if (!doReadUint32(&lengthBytes))
2401 return false; 2401 return false;
2402 blink::WebCryptoAlgorithmId hash; 2402 WebCryptoAlgorithmId hash;
2403 if (!doReadAlgorithmId(hash)) 2403 if (!doReadAlgorithmId(hash))
2404 return false; 2404 return false;
2405 algorithm = blink::WebCryptoKeyAlgorithm::createHmac(hash, lengthBytes * 8); 2405 algorithm = WebCryptoKeyAlgorithm::createHmac(hash, lengthBytes * 8);
2406 type = blink::WebCryptoKeyTypeSecret; 2406 type = WebCryptoKeyTypeSecret;
2407 return !algorithm.isNull(); 2407 return !algorithm.isNull();
2408 } 2408 }
2409 2409
2410 bool doReadAesKey(blink::WebCryptoKeyAlgorithm& algorithm, blink::WebCryptoK eyType& type) 2410 bool doReadAesKey(WebCryptoKeyAlgorithm& algorithm, WebCryptoKeyType& type)
2411 { 2411 {
2412 blink::WebCryptoAlgorithmId id; 2412 WebCryptoAlgorithmId id;
2413 if (!doReadAlgorithmId(id)) 2413 if (!doReadAlgorithmId(id))
2414 return false; 2414 return false;
2415 uint32_t lengthBytes; 2415 uint32_t lengthBytes;
2416 if (!doReadUint32(&lengthBytes)) 2416 if (!doReadUint32(&lengthBytes))
2417 return false; 2417 return false;
2418 algorithm = blink::WebCryptoKeyAlgorithm::createAes(id, lengthBytes * 8) ; 2418 algorithm = WebCryptoKeyAlgorithm::createAes(id, lengthBytes * 8);
2419 type = blink::WebCryptoKeyTypeSecret; 2419 type = WebCryptoKeyTypeSecret;
2420 return !algorithm.isNull(); 2420 return !algorithm.isNull();
2421 } 2421 }
2422 2422
2423 bool doReadRsaHashedKey(blink::WebCryptoKeyAlgorithm& algorithm, blink::WebC ryptoKeyType& type) 2423 bool doReadRsaHashedKey(WebCryptoKeyAlgorithm& algorithm, WebCryptoKeyType& type)
2424 { 2424 {
2425 blink::WebCryptoAlgorithmId id; 2425 WebCryptoAlgorithmId id;
2426 if (!doReadAlgorithmId(id)) 2426 if (!doReadAlgorithmId(id))
2427 return false; 2427 return false;
2428 2428
2429 uint32_t rawType; 2429 uint32_t rawType;
2430 if (!doReadUint32(&rawType)) 2430 if (!doReadUint32(&rawType))
2431 return false; 2431 return false;
2432 2432
2433 switch (static_cast<AssymetricCryptoKeyType>(rawType)) { 2433 switch (static_cast<AssymetricCryptoKeyType>(rawType)) {
2434 case PublicKeyType: 2434 case PublicKeyType:
2435 type = blink::WebCryptoKeyTypePublic; 2435 type = WebCryptoKeyTypePublic;
2436 break; 2436 break;
2437 case PrivateKeyType: 2437 case PrivateKeyType:
2438 type = blink::WebCryptoKeyTypePrivate; 2438 type = WebCryptoKeyTypePrivate;
2439 break; 2439 break;
2440 default: 2440 default:
2441 return false; 2441 return false;
2442 } 2442 }
2443 2443
2444 uint32_t modulusLengthBits; 2444 uint32_t modulusLengthBits;
2445 if (!doReadUint32(&modulusLengthBits)) 2445 if (!doReadUint32(&modulusLengthBits))
2446 return false; 2446 return false;
2447 2447
2448 uint32_t publicExponentSize; 2448 uint32_t publicExponentSize;
2449 if (!doReadUint32(&publicExponentSize)) 2449 if (!doReadUint32(&publicExponentSize))
2450 return false; 2450 return false;
2451 2451
2452 if (m_position + publicExponentSize > m_length) 2452 if (m_position + publicExponentSize > m_length)
2453 return false; 2453 return false;
2454 2454
2455 const uint8_t* publicExponent = m_buffer + m_position; 2455 const uint8_t* publicExponent = m_buffer + m_position;
2456 m_position += publicExponentSize; 2456 m_position += publicExponentSize;
2457 2457
2458 blink::WebCryptoAlgorithmId hash; 2458 WebCryptoAlgorithmId hash;
2459 if (!doReadAlgorithmId(hash)) 2459 if (!doReadAlgorithmId(hash))
2460 return false; 2460 return false;
2461 algorithm = blink::WebCryptoKeyAlgorithm::createRsaHashed(id, modulusLen gthBits, publicExponent, publicExponentSize, hash); 2461 algorithm = WebCryptoKeyAlgorithm::createRsaHashed(id, modulusLengthBits , publicExponent, publicExponentSize, hash);
2462 2462
2463 return !algorithm.isNull(); 2463 return !algorithm.isNull();
2464 } 2464 }
2465 2465
2466 bool doReadAlgorithmId(blink::WebCryptoAlgorithmId& id) 2466 bool doReadAlgorithmId(WebCryptoAlgorithmId& id)
2467 { 2467 {
2468 uint32_t rawId; 2468 uint32_t rawId;
2469 if (!doReadUint32(&rawId)) 2469 if (!doReadUint32(&rawId))
2470 return false; 2470 return false;
2471 2471
2472 switch (static_cast<CryptoKeyAlgorithmTag>(rawId)) { 2472 switch (static_cast<CryptoKeyAlgorithmTag>(rawId)) {
2473 case AesCbcTag: 2473 case AesCbcTag:
2474 id = blink::WebCryptoAlgorithmIdAesCbc; 2474 id = WebCryptoAlgorithmIdAesCbc;
2475 return true; 2475 return true;
2476 case HmacTag: 2476 case HmacTag:
2477 id = blink::WebCryptoAlgorithmIdHmac; 2477 id = WebCryptoAlgorithmIdHmac;
2478 return true; 2478 return true;
2479 case RsaSsaPkcs1v1_5Tag: 2479 case RsaSsaPkcs1v1_5Tag:
2480 id = blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5; 2480 id = WebCryptoAlgorithmIdRsaSsaPkcs1v1_5;
2481 return true; 2481 return true;
2482 case Sha1Tag: 2482 case Sha1Tag:
2483 id = blink::WebCryptoAlgorithmIdSha1; 2483 id = WebCryptoAlgorithmIdSha1;
2484 return true; 2484 return true;
2485 case Sha256Tag: 2485 case Sha256Tag:
2486 id = blink::WebCryptoAlgorithmIdSha256; 2486 id = WebCryptoAlgorithmIdSha256;
2487 return true; 2487 return true;
2488 case Sha384Tag: 2488 case Sha384Tag:
2489 id = blink::WebCryptoAlgorithmIdSha384; 2489 id = WebCryptoAlgorithmIdSha384;
2490 return true; 2490 return true;
2491 case Sha512Tag: 2491 case Sha512Tag:
2492 id = blink::WebCryptoAlgorithmIdSha512; 2492 id = WebCryptoAlgorithmIdSha512;
2493 return true; 2493 return true;
2494 case AesGcmTag: 2494 case AesGcmTag:
2495 id = blink::WebCryptoAlgorithmIdAesGcm; 2495 id = WebCryptoAlgorithmIdAesGcm;
2496 return true; 2496 return true;
2497 case RsaOaepTag: 2497 case RsaOaepTag:
2498 id = blink::WebCryptoAlgorithmIdRsaOaep; 2498 id = WebCryptoAlgorithmIdRsaOaep;
2499 return true; 2499 return true;
2500 case AesCtrTag: 2500 case AesCtrTag:
2501 id = blink::WebCryptoAlgorithmIdAesCtr; 2501 id = WebCryptoAlgorithmIdAesCtr;
2502 return true; 2502 return true;
2503 case AesKwTag: 2503 case AesKwTag:
2504 id = blink::WebCryptoAlgorithmIdAesKw; 2504 id = WebCryptoAlgorithmIdAesKw;
2505 return true; 2505 return true;
2506 case RsaPssTag: 2506 case RsaPssTag:
2507 id = blink::WebCryptoAlgorithmIdRsaPss; 2507 id = WebCryptoAlgorithmIdRsaPss;
2508 return true; 2508 return true;
2509 } 2509 }
2510 2510
2511 return false; 2511 return false;
2512 } 2512 }
2513 2513
2514 bool doReadKeyUsages(blink::WebCryptoKeyUsageMask& usages, bool& extractable ) 2514 bool doReadKeyUsages(WebCryptoKeyUsageMask& usages, bool& extractable)
2515 { 2515 {
2516 // Reminder to update this when adding new key usages. 2516 // Reminder to update this when adding new key usages.
2517 COMPILE_ASSERT(blink::EndOfWebCryptoKeyUsage == (1 << 7) + 1, UpdateMe); 2517 COMPILE_ASSERT(EndOfWebCryptoKeyUsage == (1 << 7) + 1, UpdateMe);
2518 const uint32_t allPossibleUsages = ExtractableUsage | EncryptUsage | Dec ryptUsage | SignUsage | VerifyUsage | DeriveKeyUsage | WrapKeyUsage | UnwrapKeyU sage | DeriveBitsUsage; 2518 const uint32_t allPossibleUsages = ExtractableUsage | EncryptUsage | Dec ryptUsage | SignUsage | VerifyUsage | DeriveKeyUsage | WrapKeyUsage | UnwrapKeyU sage | DeriveBitsUsage;
2519 2519
2520 uint32_t rawUsages; 2520 uint32_t rawUsages;
2521 if (!doReadUint32(&rawUsages)) 2521 if (!doReadUint32(&rawUsages))
2522 return false; 2522 return false;
2523 2523
2524 // Make sure it doesn't contain an unrecognized usage value. 2524 // Make sure it doesn't contain an unrecognized usage value.
2525 if (rawUsages & ~allPossibleUsages) 2525 if (rawUsages & ~allPossibleUsages)
2526 return false; 2526 return false;
2527 2527
2528 usages = 0; 2528 usages = 0;
2529 2529
2530 extractable = rawUsages & ExtractableUsage; 2530 extractable = rawUsages & ExtractableUsage;
2531 2531
2532 if (rawUsages & EncryptUsage) 2532 if (rawUsages & EncryptUsage)
2533 usages |= blink::WebCryptoKeyUsageEncrypt; 2533 usages |= WebCryptoKeyUsageEncrypt;
2534 if (rawUsages & DecryptUsage) 2534 if (rawUsages & DecryptUsage)
2535 usages |= blink::WebCryptoKeyUsageDecrypt; 2535 usages |= WebCryptoKeyUsageDecrypt;
2536 if (rawUsages & SignUsage) 2536 if (rawUsages & SignUsage)
2537 usages |= blink::WebCryptoKeyUsageSign; 2537 usages |= WebCryptoKeyUsageSign;
2538 if (rawUsages & VerifyUsage) 2538 if (rawUsages & VerifyUsage)
2539 usages |= blink::WebCryptoKeyUsageVerify; 2539 usages |= WebCryptoKeyUsageVerify;
2540 if (rawUsages & DeriveKeyUsage) 2540 if (rawUsages & DeriveKeyUsage)
2541 usages |= blink::WebCryptoKeyUsageDeriveKey; 2541 usages |= WebCryptoKeyUsageDeriveKey;
2542 if (rawUsages & WrapKeyUsage) 2542 if (rawUsages & WrapKeyUsage)
2543 usages |= blink::WebCryptoKeyUsageWrapKey; 2543 usages |= WebCryptoKeyUsageWrapKey;
2544 if (rawUsages & UnwrapKeyUsage) 2544 if (rawUsages & UnwrapKeyUsage)
2545 usages |= blink::WebCryptoKeyUsageUnwrapKey; 2545 usages |= WebCryptoKeyUsageUnwrapKey;
2546 if (rawUsages & DeriveBitsUsage) 2546 if (rawUsages & DeriveBitsUsage)
2547 usages |= blink::WebCryptoKeyUsageDeriveBits; 2547 usages |= WebCryptoKeyUsageDeriveBits;
2548 2548
2549 return true; 2549 return true;
2550 } 2550 }
2551 2551
2552 RefPtr<ScriptState> m_scriptState; 2552 RefPtr<ScriptState> m_scriptState;
2553 const uint8_t* m_buffer; 2553 const uint8_t* m_buffer;
2554 const unsigned m_length; 2554 const unsigned m_length;
2555 unsigned m_position; 2555 unsigned m_position;
2556 uint32_t m_version; 2556 uint32_t m_version;
2557 const WebBlobInfoArray* m_blobInfo; 2557 const WebBlobInfoArray* m_blobInfo;
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
3065 // If the allocated memory was not registered before, then this class is lik ely 3065 // If the allocated memory was not registered before, then this class is lik ely
3066 // used in a context other then Worker's onmessage environment and the prese nce of 3066 // used in a context other then Worker's onmessage environment and the prese nce of
3067 // current v8 context is not guaranteed. Avoid calling v8 then. 3067 // current v8 context is not guaranteed. Avoid calling v8 then.
3068 if (m_externallyAllocatedMemory) { 3068 if (m_externallyAllocatedMemory) {
3069 ASSERT(v8::Isolate::GetCurrent()); 3069 ASSERT(v8::Isolate::GetCurrent());
3070 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_exte rnallyAllocatedMemory); 3070 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_exte rnallyAllocatedMemory);
3071 } 3071 }
3072 } 3072 }
3073 3073
3074 } // namespace blink 3074 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698