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

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

Issue 296333002: Revert 174726 "[webcrypto] Remove RSA-ES support (3 of 3)" (Closed) Base URL: svn://svn.chromium.org/blink/
Patch Set: Created 6 years, 7 months 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 | trunk/Source/modules/crypto/KeyAlgorithm.h » ('j') | 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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 // fills it with the last length elements and numProperties name,value pairs pushed onto des erialization stack 214 // fills it with the last length elements and numProperties name,value pairs pushed onto des erialization stack
215 RegExpTag = 'R', // pattern:RawString, flags:uint32_t -> RegExp (ref) 215 RegExpTag = 'R', // pattern:RawString, flags:uint32_t -> RegExp (ref)
216 ArrayBufferTag = 'B', // byteLength:uint32_t, data:byte[byteLength] -> Array Buffer (ref) 216 ArrayBufferTag = 'B', // byteLength:uint32_t, data:byte[byteLength] -> Array Buffer (ref)
217 ArrayBufferTransferTag = 't', // index:uint32_t -> ArrayBuffer. For ArrayBuf fer transfer 217 ArrayBufferTransferTag = 't', // index:uint32_t -> ArrayBuffer. For ArrayBuf fer transfer
218 ArrayBufferViewTag = 'V', // subtag:byte, byteOffset:uint32_t, byteLength:ui nt32_t -> ArrayBufferView (ref). Consumes an ArrayBuffer from the top of the des erialization stack. 218 ArrayBufferViewTag = 'V', // subtag:byte, byteOffset:uint32_t, byteLength:ui nt32_t -> ArrayBufferView (ref). Consumes an ArrayBuffer from the top of the des erialization stack.
219 CryptoKeyTag = 'K', // subtag:byte, props, usages:uint32_t, keyDataLength:ui nt32_t, keyData:byte[keyDataLength] 219 CryptoKeyTag = 'K', // subtag:byte, props, usages:uint32_t, keyDataLength:ui nt32_t, keyData:byte[keyDataLength]
220 // If subtag=AesKeyTag: 220 // If subtag=AesKeyTag:
221 // props = keyLengthBytes:uint32_t, algorithmId:ui nt32_t 221 // props = keyLengthBytes:uint32_t, algorithmId:ui nt32_t
222 // If subtag=HmacKeyTag: 222 // If subtag=HmacKeyTag:
223 // props = keyLengthBytes:uint32_t, hashId:uint32_ t 223 // props = keyLengthBytes:uint32_t, hashId:uint32_ t
224 // If subtag=RsaKeyTag:
225 // props = algorithmId:uint32_t, type:uint32_t, mo dulusLengthBits:uint32_t, publicExponentLength:uint32_t, publicExponent:byte[pub licExponentLength]
224 // If subtag=RsaHashedKeyTag: 226 // If subtag=RsaHashedKeyTag:
225 // props = algorithmId:uint32_t, type:uint32_t, mo dulusLengthBits:uint32_t, publicExponentLength:uint32_t, publicExponent:byte[pub licExponentLength], hashId:uint32_t 227 // props = <same as for RsaKeyTag>, hashId:uint32_ t
226 ObjectReferenceTag = '^', // ref:uint32_t -> reference table[ref] 228 ObjectReferenceTag = '^', // ref:uint32_t -> reference table[ref]
227 GenerateFreshObjectTag = 'o', // -> empty object allocated an object ID and pushed onto the open stack (ref) 229 GenerateFreshObjectTag = 'o', // -> empty object allocated an object ID and pushed onto the open stack (ref)
228 GenerateFreshSparseArrayTag = 'a', // length:uint32_t -> empty array[length] allocated an object ID and pushed onto the open stack (ref) 230 GenerateFreshSparseArrayTag = 'a', // length:uint32_t -> empty array[length] allocated an object ID and pushed onto the open stack (ref)
229 GenerateFreshDenseArrayTag = 'A', // length:uint32_t -> empty array[length] allocated an object ID and pushed onto the open stack (ref) 231 GenerateFreshDenseArrayTag = 'A', // length:uint32_t -> empty array[length] allocated an object ID and pushed onto the open stack (ref)
230 ReferenceCountTag = '?', // refTableSize:uint32_t -> If the reference table is not refTableSize big, fails. 232 ReferenceCountTag = '?', // refTableSize:uint32_t -> If the reference table is not refTableSize big, fails.
231 StringObjectTag = 's', // string:RawString -> new String(string) (ref) 233 StringObjectTag = 's', // string:RawString -> new String(string) (ref)
232 NumberObjectTag = 'n', // value:double -> new Number(value) (ref) 234 NumberObjectTag = 'n', // value:double -> new Number(value) (ref)
233 TrueObjectTag = 'y', // new Boolean(true) (ref) 235 TrueObjectTag = 'y', // new Boolean(true) (ref)
234 FalseObjectTag = 'x', // new Boolean(false) (ref) 236 FalseObjectTag = 'x', // new Boolean(false) (ref)
235 VersionTag = 0xFF // version:uint32_t -> Uses this as the file version. 237 VersionTag = 0xFF // version:uint32_t -> Uses this as the file version.
236 }; 238 };
237 239
238 enum ArrayBufferViewSubTag { 240 enum ArrayBufferViewSubTag {
239 ByteArrayTag = 'b', 241 ByteArrayTag = 'b',
240 UnsignedByteArrayTag = 'B', 242 UnsignedByteArrayTag = 'B',
241 UnsignedByteClampedArrayTag = 'C', 243 UnsignedByteClampedArrayTag = 'C',
242 ShortArrayTag = 'w', 244 ShortArrayTag = 'w',
243 UnsignedShortArrayTag = 'W', 245 UnsignedShortArrayTag = 'W',
244 IntArrayTag = 'd', 246 IntArrayTag = 'd',
245 UnsignedIntArrayTag = 'D', 247 UnsignedIntArrayTag = 'D',
246 FloatArrayTag = 'f', 248 FloatArrayTag = 'f',
247 DoubleArrayTag = 'F', 249 DoubleArrayTag = 'F',
248 DataViewTag = '?' 250 DataViewTag = '?'
249 }; 251 };
250 252
251 enum CryptoKeySubTag { 253 enum CryptoKeySubTag {
252 AesKeyTag = 1, 254 AesKeyTag = 1,
253 HmacKeyTag = 2, 255 HmacKeyTag = 2,
254 // ID 3 was used by RsaKeyTag, while still behind experimental flag. 256 RsaKeyTag = 3,
255 RsaHashedKeyTag = 4, 257 RsaHashedKeyTag = 4,
256 // Maximum allowed value is 255 258 // Maximum allowed value is 255
257 }; 259 };
258 260
259 enum AssymetricCryptoKeyType { 261 enum AssymetricCryptoKeyType {
260 PublicKeyType = 1, 262 PublicKeyType = 1,
261 PrivateKeyType = 2, 263 PrivateKeyType = 2,
262 // Maximum allowed value is 2^32-1 264 // Maximum allowed value is 2^32-1
263 }; 265 };
264 266
265 enum CryptoKeyAlgorithmTag { 267 enum CryptoKeyAlgorithmTag {
266 AesCbcTag = 1, 268 AesCbcTag = 1,
267 HmacTag = 2, 269 HmacTag = 2,
268 RsaSsaPkcs1v1_5Tag = 3, 270 RsaSsaPkcs1v1_5Tag = 3,
269 // ID 4 was used by RsaEs, while still behind experimental flag. 271 RsaEsPkcs1v1_5Tag = 4,
270 Sha1Tag = 5, 272 Sha1Tag = 5,
271 Sha256Tag = 6, 273 Sha256Tag = 6,
272 Sha384Tag = 7, 274 Sha384Tag = 7,
273 Sha512Tag = 8, 275 Sha512Tag = 8,
274 AesGcmTag = 9, 276 AesGcmTag = 9,
275 RsaOaepTag = 10, 277 RsaOaepTag = 10,
276 AesCtrTag = 11, 278 AesCtrTag = 11,
277 AesKwTag = 12, 279 AesKwTag = 12,
278 // Maximum allowed value is 2^32-1 280 // Maximum allowed value is 2^32-1
279 }; 281 };
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 { 510 {
509 append(static_cast<uint8_t>(CryptoKeyTag)); 511 append(static_cast<uint8_t>(CryptoKeyTag));
510 512
511 switch (key.algorithm().paramsType()) { 513 switch (key.algorithm().paramsType()) {
512 case blink::WebCryptoKeyAlgorithmParamsTypeAes: 514 case blink::WebCryptoKeyAlgorithmParamsTypeAes:
513 doWriteAesKey(key); 515 doWriteAesKey(key);
514 break; 516 break;
515 case blink::WebCryptoKeyAlgorithmParamsTypeHmac: 517 case blink::WebCryptoKeyAlgorithmParamsTypeHmac:
516 doWriteHmacKey(key); 518 doWriteHmacKey(key);
517 break; 519 break;
520 case blink::WebCryptoKeyAlgorithmParamsTypeRsa:
518 case blink::WebCryptoKeyAlgorithmParamsTypeRsaHashed: 521 case blink::WebCryptoKeyAlgorithmParamsTypeRsaHashed:
519 doWriteRsaHashedKey(key); 522 doWriteRsaKey(key);
520 break; 523 break;
521 case blink::WebCryptoKeyAlgorithmParamsTypeNone: 524 case blink::WebCryptoKeyAlgorithmParamsTypeNone:
522 ASSERT_NOT_REACHED(); 525 ASSERT_NOT_REACHED();
523 return false; 526 return false;
524 } 527 }
525 528
526 doWriteKeyUsages(key.usages(), key.extractable()); 529 doWriteKeyUsages(key.usages(), key.extractable());
527 530
528 blink::WebVector<uint8_t> keyData; 531 blink::WebVector<uint8_t> keyData;
529 if (!blink::Platform::current()->crypto()->serializeKeyForClone(key, key Data)) 532 if (!blink::Platform::current()->crypto()->serializeKeyForClone(key, key Data))
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 ASSERT(key.algorithm().paramsType() == blink::WebCryptoKeyAlgorithmParam sTypeAes); 723 ASSERT(key.algorithm().paramsType() == blink::WebCryptoKeyAlgorithmParam sTypeAes);
721 724
722 append(static_cast<uint8_t>(AesKeyTag)); 725 append(static_cast<uint8_t>(AesKeyTag));
723 doWriteAlgorithmId(key.algorithm().id()); 726 doWriteAlgorithmId(key.algorithm().id());
724 // 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
725 // it fit in 1 byte. 728 // it fit in 1 byte.
726 ASSERT(!(key.algorithm().aesParams()->lengthBits() % 8)); 729 ASSERT(!(key.algorithm().aesParams()->lengthBits() % 8));
727 doWriteUint32(key.algorithm().aesParams()->lengthBits() / 8); 730 doWriteUint32(key.algorithm().aesParams()->lengthBits() / 8);
728 } 731 }
729 732
730 void doWriteRsaHashedKey(const blink::WebCryptoKey& key) 733 void doWriteRsaKey(const blink::WebCryptoKey& key)
731 { 734 {
732 ASSERT(key.algorithm().rsaHashedParams()); 735 if (key.algorithm().rsaHashedParams())
733 append(static_cast<uint8_t>(RsaHashedKeyTag)); 736 append(static_cast<uint8_t>(RsaHashedKeyTag));
737 else
738 append(static_cast<uint8_t>(RsaKeyTag));
734 739
735 doWriteAlgorithmId(key.algorithm().id()); 740 doWriteAlgorithmId(key.algorithm().id());
736 741
737 switch (key.type()) { 742 switch (key.type()) {
738 case blink::WebCryptoKeyTypePublic: 743 case blink::WebCryptoKeyTypePublic:
739 doWriteUint32(PublicKeyType); 744 doWriteUint32(PublicKeyType);
740 break; 745 break;
741 case blink::WebCryptoKeyTypePrivate: 746 case blink::WebCryptoKeyTypePrivate:
742 doWriteUint32(PrivateKeyType); 747 doWriteUint32(PrivateKeyType);
743 break; 748 break;
744 case blink::WebCryptoKeyTypeSecret: 749 case blink::WebCryptoKeyTypeSecret:
745 ASSERT_NOT_REACHED(); 750 ASSERT_NOT_REACHED();
746 } 751 }
747 752
748 const blink::WebCryptoRsaHashedKeyAlgorithmParams* params = key.algorith m().rsaHashedParams(); 753 const blink::WebCryptoRsaKeyAlgorithmParams* params = key.algorithm().rs aParams();
749 doWriteUint32(params->modulusLengthBits()); 754 doWriteUint32(params->modulusLengthBits());
750 doWriteUint32(params->publicExponent().size()); 755 doWriteUint32(params->publicExponent().size());
751 append(params->publicExponent().data(), params->publicExponent().size()) ; 756 append(params->publicExponent().data(), params->publicExponent().size()) ;
752 doWriteAlgorithmId(key.algorithm().rsaHashedParams()->hash().id()); 757
758 if (key.algorithm().rsaHashedParams())
759 doWriteAlgorithmId(key.algorithm().rsaHashedParams()->hash().id());
753 } 760 }
754 761
755 void doWriteAlgorithmId(blink::WebCryptoAlgorithmId id) 762 void doWriteAlgorithmId(blink::WebCryptoAlgorithmId id)
756 { 763 {
757 switch (id) { 764 switch (id) {
758 case blink::WebCryptoAlgorithmIdAesCbc: 765 case blink::WebCryptoAlgorithmIdAesCbc:
759 return doWriteUint32(AesCbcTag); 766 return doWriteUint32(AesCbcTag);
760 case blink::WebCryptoAlgorithmIdHmac: 767 case blink::WebCryptoAlgorithmIdHmac:
761 return doWriteUint32(HmacTag); 768 return doWriteUint32(HmacTag);
762 case blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5: 769 case blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5:
763 return doWriteUint32(RsaSsaPkcs1v1_5Tag); 770 return doWriteUint32(RsaSsaPkcs1v1_5Tag);
771 case blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5:
772 return doWriteUint32(RsaEsPkcs1v1_5Tag);
764 case blink::WebCryptoAlgorithmIdSha1: 773 case blink::WebCryptoAlgorithmIdSha1:
765 return doWriteUint32(Sha1Tag); 774 return doWriteUint32(Sha1Tag);
766 case blink::WebCryptoAlgorithmIdSha256: 775 case blink::WebCryptoAlgorithmIdSha256:
767 return doWriteUint32(Sha256Tag); 776 return doWriteUint32(Sha256Tag);
768 case blink::WebCryptoAlgorithmIdSha384: 777 case blink::WebCryptoAlgorithmIdSha384:
769 return doWriteUint32(Sha384Tag); 778 return doWriteUint32(Sha384Tag);
770 case blink::WebCryptoAlgorithmIdSha512: 779 case blink::WebCryptoAlgorithmIdSha512:
771 return doWriteUint32(Sha512Tag); 780 return doWriteUint32(Sha512Tag);
772 case blink::WebCryptoAlgorithmIdAesGcm: 781 case blink::WebCryptoAlgorithmIdAesGcm:
773 return doWriteUint32(AesGcmTag); 782 return doWriteUint32(AesGcmTag);
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after
2238 2247
2239 switch (static_cast<CryptoKeySubTag>(rawKeyType)) { 2248 switch (static_cast<CryptoKeySubTag>(rawKeyType)) {
2240 case AesKeyTag: 2249 case AesKeyTag:
2241 if (!doReadAesKey(algorithm, type)) 2250 if (!doReadAesKey(algorithm, type))
2242 return false; 2251 return false;
2243 break; 2252 break;
2244 case HmacKeyTag: 2253 case HmacKeyTag:
2245 if (!doReadHmacKey(algorithm, type)) 2254 if (!doReadHmacKey(algorithm, type))
2246 return false; 2255 return false;
2247 break; 2256 break;
2257 case RsaKeyTag:
2258 if (!doReadRsaKey(false, algorithm, type))
2259 return false;
2260 break;
2248 case RsaHashedKeyTag: 2261 case RsaHashedKeyTag:
2249 if (!doReadRsaHashedKey(algorithm, type)) 2262 if (!doReadRsaKey(true, algorithm, type))
2250 return false; 2263 return false;
2251 break; 2264 break;
2252 default: 2265 default:
2253 return false; 2266 return false;
2254 } 2267 }
2255 2268
2256 blink::WebCryptoKeyUsageMask usages; 2269 blink::WebCryptoKeyUsageMask usages;
2257 bool extractable; 2270 bool extractable;
2258 if (!doReadKeyUsages(usages, extractable)) 2271 if (!doReadKeyUsages(usages, extractable))
2259 return false; 2272 return false;
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
2399 if (!doReadAlgorithmId(id)) 2412 if (!doReadAlgorithmId(id))
2400 return false; 2413 return false;
2401 uint32_t lengthBytes; 2414 uint32_t lengthBytes;
2402 if (!doReadUint32(&lengthBytes)) 2415 if (!doReadUint32(&lengthBytes))
2403 return false; 2416 return false;
2404 algorithm = blink::WebCryptoKeyAlgorithm::createAes(id, lengthBytes * 8) ; 2417 algorithm = blink::WebCryptoKeyAlgorithm::createAes(id, lengthBytes * 8) ;
2405 type = blink::WebCryptoKeyTypeSecret; 2418 type = blink::WebCryptoKeyTypeSecret;
2406 return !algorithm.isNull(); 2419 return !algorithm.isNull();
2407 } 2420 }
2408 2421
2409 bool doReadRsaHashedKey(blink::WebCryptoKeyAlgorithm& algorithm, blink::WebC ryptoKeyType& type) 2422 bool doReadRsaKey(bool hasHash, blink::WebCryptoKeyAlgorithm& algorithm, bli nk::WebCryptoKeyType& type)
2410 { 2423 {
2411 blink::WebCryptoAlgorithmId id; 2424 blink::WebCryptoAlgorithmId id;
2412 if (!doReadAlgorithmId(id)) 2425 if (!doReadAlgorithmId(id))
2413 return false; 2426 return false;
2414 2427
2415 uint32_t rawType; 2428 uint32_t rawType;
2416 if (!doReadUint32(&rawType)) 2429 if (!doReadUint32(&rawType))
2417 return false; 2430 return false;
2418 2431
2419 switch (static_cast<AssymetricCryptoKeyType>(rawType)) { 2432 switch (static_cast<AssymetricCryptoKeyType>(rawType)) {
(...skipping 14 matching lines...) Expand all
2434 uint32_t publicExponentSize; 2447 uint32_t publicExponentSize;
2435 if (!doReadUint32(&publicExponentSize)) 2448 if (!doReadUint32(&publicExponentSize))
2436 return false; 2449 return false;
2437 2450
2438 if (m_position + publicExponentSize > m_length) 2451 if (m_position + publicExponentSize > m_length)
2439 return false; 2452 return false;
2440 2453
2441 const uint8_t* publicExponent = m_buffer + m_position; 2454 const uint8_t* publicExponent = m_buffer + m_position;
2442 m_position += publicExponentSize; 2455 m_position += publicExponentSize;
2443 2456
2444 blink::WebCryptoAlgorithmId hash; 2457 if (hasHash) {
2445 if (!doReadAlgorithmId(hash)) 2458 blink::WebCryptoAlgorithmId hash;
2446 return false; 2459 if (!doReadAlgorithmId(hash))
2447 algorithm = blink::WebCryptoKeyAlgorithm::createRsaHashed(id, modulusLen gthBits, publicExponent, publicExponentSize, hash); 2460 return false;
2461 algorithm = blink::WebCryptoKeyAlgorithm::createRsaHashed(id, modulu sLengthBits, publicExponent, publicExponentSize, hash);
2462 } else {
2463 algorithm = blink::WebCryptoKeyAlgorithm::createRsa(id, modulusLengt hBits, publicExponent, publicExponentSize);
2464 }
2448 2465
2449 return !algorithm.isNull(); 2466 return !algorithm.isNull();
2450 } 2467 }
2451 2468
2452 bool doReadAlgorithmId(blink::WebCryptoAlgorithmId& id) 2469 bool doReadAlgorithmId(blink::WebCryptoAlgorithmId& id)
2453 { 2470 {
2454 uint32_t rawId; 2471 uint32_t rawId;
2455 if (!doReadUint32(&rawId)) 2472 if (!doReadUint32(&rawId))
2456 return false; 2473 return false;
2457 2474
2458 switch (static_cast<CryptoKeyAlgorithmTag>(rawId)) { 2475 switch (static_cast<CryptoKeyAlgorithmTag>(rawId)) {
2459 case AesCbcTag: 2476 case AesCbcTag:
2460 id = blink::WebCryptoAlgorithmIdAesCbc; 2477 id = blink::WebCryptoAlgorithmIdAesCbc;
2461 return true; 2478 return true;
2462 case HmacTag: 2479 case HmacTag:
2463 id = blink::WebCryptoAlgorithmIdHmac; 2480 id = blink::WebCryptoAlgorithmIdHmac;
2464 return true; 2481 return true;
2465 case RsaSsaPkcs1v1_5Tag: 2482 case RsaSsaPkcs1v1_5Tag:
2466 id = blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5; 2483 id = blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5;
2467 return true; 2484 return true;
2485 case RsaEsPkcs1v1_5Tag:
2486 id = blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5;
2487 return true;
2468 case Sha1Tag: 2488 case Sha1Tag:
2469 id = blink::WebCryptoAlgorithmIdSha1; 2489 id = blink::WebCryptoAlgorithmIdSha1;
2470 return true; 2490 return true;
2471 case Sha256Tag: 2491 case Sha256Tag:
2472 id = blink::WebCryptoAlgorithmIdSha256; 2492 id = blink::WebCryptoAlgorithmIdSha256;
2473 return true; 2493 return true;
2474 case Sha384Tag: 2494 case Sha384Tag:
2475 id = blink::WebCryptoAlgorithmIdSha384; 2495 id = blink::WebCryptoAlgorithmIdSha384;
2476 return true; 2496 return true;
2477 case Sha512Tag: 2497 case Sha512Tag:
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
3049 // If the allocated memory was not registered before, then this class is lik ely 3069 // If the allocated memory was not registered before, then this class is lik ely
3050 // used in a context other then Worker's onmessage environment and the prese nce of 3070 // used in a context other then Worker's onmessage environment and the prese nce of
3051 // current v8 context is not guaranteed. Avoid calling v8 then. 3071 // current v8 context is not guaranteed. Avoid calling v8 then.
3052 if (m_externallyAllocatedMemory) { 3072 if (m_externallyAllocatedMemory) {
3053 ASSERT(v8::Isolate::GetCurrent()); 3073 ASSERT(v8::Isolate::GetCurrent());
3054 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_exte rnallyAllocatedMemory); 3074 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-m_exte rnallyAllocatedMemory);
3055 } 3075 }
3056 } 3076 }
3057 3077
3058 } // namespace WebCore 3078 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | trunk/Source/modules/crypto/KeyAlgorithm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698