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

Side by Side Diff: third_party/WebKit/Source/modules/crypto/SubtleCrypto.cpp

Issue 2392443007: reflow comments in modules/[app_banner,encoding] (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 return WebVector<uint8_t>(static_cast<uint8_t*>(source.data()), 168 return WebVector<uint8_t>(static_cast<uint8_t*>(source.data()),
169 source.byteLength()); 169 source.byteLength());
170 } 170 }
171 171
172 SubtleCrypto::SubtleCrypto() {} 172 SubtleCrypto::SubtleCrypto() {}
173 173
174 ScriptPromise SubtleCrypto::encrypt(ScriptState* scriptState, 174 ScriptPromise SubtleCrypto::encrypt(ScriptState* scriptState,
175 const AlgorithmIdentifier& rawAlgorithm, 175 const AlgorithmIdentifier& rawAlgorithm,
176 CryptoKey* key, 176 CryptoKey* key,
177 const BufferSource& rawData) { 177 const BufferSource& rawData) {
178 // Method described by: https://w3c.github.io/webcrypto/Overview.html#dfn-Subt leCrypto-method-encrypt 178 // Method described by:
179 // https://w3c.github.io/webcrypto/Overview.html#dfn-SubtleCrypto-method-encry pt
179 180
180 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 181 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
181 ScriptPromise promise = result->promise(); 182 ScriptPromise promise = result->promise();
182 183
183 if (!canAccessWebCrypto(scriptState, result)) 184 if (!canAccessWebCrypto(scriptState, result))
184 return promise; 185 return promise;
185 186
186 // 14.3.1.2: Let data be the result of getting a copy of the bytes held by 187 // 14.3.1.2: Let data be the result of getting a copy of the bytes held by
187 // the data parameter passed to the encrypt method. 188 // the data parameter passed to the encrypt method.
188 WebVector<uint8_t> data = copyBytes(rawData); 189 WebVector<uint8_t> data = copyBytes(rawData);
(...skipping 19 matching lines...) Expand all
208 normalizedAlgorithm, key->key()); 209 normalizedAlgorithm, key->key());
209 Platform::current()->crypto()->encrypt(normalizedAlgorithm, key->key(), 210 Platform::current()->crypto()->encrypt(normalizedAlgorithm, key->key(),
210 std::move(data), result->result()); 211 std::move(data), result->result());
211 return promise; 212 return promise;
212 } 213 }
213 214
214 ScriptPromise SubtleCrypto::decrypt(ScriptState* scriptState, 215 ScriptPromise SubtleCrypto::decrypt(ScriptState* scriptState,
215 const AlgorithmIdentifier& rawAlgorithm, 216 const AlgorithmIdentifier& rawAlgorithm,
216 CryptoKey* key, 217 CryptoKey* key,
217 const BufferSource& rawData) { 218 const BufferSource& rawData) {
218 // Method described by: https://w3c.github.io/webcrypto/Overview.html#dfn-Subt leCrypto-method-decrypt 219 // Method described by:
220 // https://w3c.github.io/webcrypto/Overview.html#dfn-SubtleCrypto-method-decry pt
219 221
220 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 222 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
221 ScriptPromise promise = result->promise(); 223 ScriptPromise promise = result->promise();
222 224
223 if (!canAccessWebCrypto(scriptState, result)) 225 if (!canAccessWebCrypto(scriptState, result))
224 return promise; 226 return promise;
225 227
226 // 14.3.2.2: Let data be the result of getting a copy of the bytes held by 228 // 14.3.2.2: Let data be the result of getting a copy of the bytes held by
227 // the data parameter passed to the decrypt method. 229 // the data parameter passed to the decrypt method.
228 WebVector<uint8_t> data = copyBytes(rawData); 230 WebVector<uint8_t> data = copyBytes(rawData);
(...skipping 19 matching lines...) Expand all
248 normalizedAlgorithm, key->key()); 250 normalizedAlgorithm, key->key());
249 Platform::current()->crypto()->decrypt(normalizedAlgorithm, key->key(), 251 Platform::current()->crypto()->decrypt(normalizedAlgorithm, key->key(),
250 std::move(data), result->result()); 252 std::move(data), result->result());
251 return promise; 253 return promise;
252 } 254 }
253 255
254 ScriptPromise SubtleCrypto::sign(ScriptState* scriptState, 256 ScriptPromise SubtleCrypto::sign(ScriptState* scriptState,
255 const AlgorithmIdentifier& rawAlgorithm, 257 const AlgorithmIdentifier& rawAlgorithm,
256 CryptoKey* key, 258 CryptoKey* key,
257 const BufferSource& rawData) { 259 const BufferSource& rawData) {
258 // Method described by: https://w3c.github.io/webcrypto/Overview.html#dfn-Subt leCrypto-method-sign 260 // Method described by:
261 // https://w3c.github.io/webcrypto/Overview.html#dfn-SubtleCrypto-method-sign
259 262
260 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 263 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
261 ScriptPromise promise = result->promise(); 264 ScriptPromise promise = result->promise();
262 265
263 if (!canAccessWebCrypto(scriptState, result)) 266 if (!canAccessWebCrypto(scriptState, result))
264 return promise; 267 return promise;
265 268
266 // 14.3.3.2: Let data be the result of getting a copy of the bytes held by 269 // 14.3.3.2: Let data be the result of getting a copy of the bytes held by
267 // the data parameter passed to the sign method. 270 // the data parameter passed to the sign method.
268 WebVector<uint8_t> data = copyBytes(rawData); 271 WebVector<uint8_t> data = copyBytes(rawData);
(...skipping 21 matching lines...) Expand all
290 std::move(data), result->result()); 293 std::move(data), result->result());
291 return promise; 294 return promise;
292 } 295 }
293 296
294 ScriptPromise SubtleCrypto::verifySignature( 297 ScriptPromise SubtleCrypto::verifySignature(
295 ScriptState* scriptState, 298 ScriptState* scriptState,
296 const AlgorithmIdentifier& rawAlgorithm, 299 const AlgorithmIdentifier& rawAlgorithm,
297 CryptoKey* key, 300 CryptoKey* key,
298 const BufferSource& rawSignature, 301 const BufferSource& rawSignature,
299 const BufferSource& rawData) { 302 const BufferSource& rawData) {
300 // Method described by: https://w3c.github.io/webcrypto/Overview.html#SubtleCr ypto-method-verify 303 // Method described by:
304 // https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-verify
301 305
302 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 306 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
303 ScriptPromise promise = result->promise(); 307 ScriptPromise promise = result->promise();
304 308
305 if (!canAccessWebCrypto(scriptState, result)) 309 if (!canAccessWebCrypto(scriptState, result))
306 return promise; 310 return promise;
307 311
308 // 14.3.4.2: Let signature be the result of getting a copy of the bytes 312 // 14.3.4.2: Let signature be the result of getting a copy of the bytes
309 // held by the signature parameter passed to the verify method. 313 // held by the signature parameter passed to the verify method.
310 WebVector<uint8_t> signature = copyBytes(rawSignature); 314 WebVector<uint8_t> signature = copyBytes(rawSignature);
311 315
312 // 14.3.4.3: Let data be the result of getting a copy of the bytes held by 316 // 14.3.4.3: Let data be the result of getting a copy of the bytes held by
313 // the data parameter passed to the verify method. 317 // the data parameter passed to the verify method.
314 WebVector<uint8_t> data = copyBytes(rawData); 318 WebVector<uint8_t> data = copyBytes(rawData);
315 319
316 // 14.3.4.4: Let normalizedAlgorithm be the result of normalizing an 320 // 14.3.4.4: Let normalizedAlgorithm be the result of normalizing an
317 // algorithm, with alg set to algorithm and op set to "verify". 321 // algorithm, with alg set to algorithm and op set to "verify".
318 WebCryptoAlgorithm normalizedAlgorithm; 322 WebCryptoAlgorithm normalizedAlgorithm;
319 if (!parseAlgorithm(rawAlgorithm, WebCryptoOperationVerify, 323 if (!parseAlgorithm(rawAlgorithm, WebCryptoOperationVerify,
320 normalizedAlgorithm, result)) 324 normalizedAlgorithm, result))
321 return promise; 325 return promise;
322 326
323 // 14.3.4.9: If the name member of normalizedAlgorithm is not equal to the 327 // 14.3.4.9: If the name member of normalizedAlgorithm is not equal to the
324 // name attribute of the [[algorithm]] internal slot of key then thr ow an 328 // name attribute of the [[algorithm]] internal slot of key then
325 // InvalidAccessError. 329 // throw an InvalidAccessError.
326 // 330 //
327 // 14.3.4.10: If the [[usages]] internal slot of key does not contain an 331 // 14.3.4.10: If the [[usages]] internal slot of key does not contain an
328 // entry that is "verify", then throw an InvalidAccessError. 332 // entry that is "verify", then throw an InvalidAccessError.
329 if (!key->canBeUsedForAlgorithm(normalizedAlgorithm, WebCryptoKeyUsageVerify, 333 if (!key->canBeUsedForAlgorithm(normalizedAlgorithm, WebCryptoKeyUsageVerify,
330 result)) 334 result))
331 return promise; 335 return promise;
332 336
333 histogramAlgorithmAndKey(scriptState->getExecutionContext(), 337 histogramAlgorithmAndKey(scriptState->getExecutionContext(),
334 normalizedAlgorithm, key->key()); 338 normalizedAlgorithm, key->key());
335 Platform::current()->crypto()->verifySignature( 339 Platform::current()->crypto()->verifySignature(
336 normalizedAlgorithm, key->key(), std::move(signature), std::move(data), 340 normalizedAlgorithm, key->key(), std::move(signature), std::move(data),
337 result->result()); 341 result->result());
338 return promise; 342 return promise;
339 } 343 }
340 344
341 ScriptPromise SubtleCrypto::digest(ScriptState* scriptState, 345 ScriptPromise SubtleCrypto::digest(ScriptState* scriptState,
342 const AlgorithmIdentifier& rawAlgorithm, 346 const AlgorithmIdentifier& rawAlgorithm,
343 const BufferSource& rawData) { 347 const BufferSource& rawData) {
344 // Method described by: https://w3c.github.io/webcrypto/Overview.html#SubtleCr ypto-method-digest 348 // Method described by:
349 // https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-digest
345 350
346 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 351 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
347 ScriptPromise promise = result->promise(); 352 ScriptPromise promise = result->promise();
348 353
349 if (!canAccessWebCrypto(scriptState, result)) 354 if (!canAccessWebCrypto(scriptState, result))
350 return promise; 355 return promise;
351 356
352 // 14.3.5.2: Let data be the result of getting a copy of the bytes held 357 // 14.3.5.2: Let data be the result of getting a copy of the bytes held
353 // by the data parameter passed to the digest method. 358 // by the data parameter passed to the digest method.
354 WebVector<uint8_t> data = copyBytes(rawData); 359 WebVector<uint8_t> data = copyBytes(rawData);
355 360
356 // 14.3.5.3: Let normalizedAlgorithm be the result of normalizing an 361 // 14.3.5.3: Let normalizedAlgorithm be the result of normalizing an
357 // algorithm, with alg set to algorithm and op set to "digest". 362 // algorithm, with alg set to algorithm and op set to "digest".
358 WebCryptoAlgorithm normalizedAlgorithm; 363 WebCryptoAlgorithm normalizedAlgorithm;
359 if (!parseAlgorithm(rawAlgorithm, WebCryptoOperationDigest, 364 if (!parseAlgorithm(rawAlgorithm, WebCryptoOperationDigest,
360 normalizedAlgorithm, result)) 365 normalizedAlgorithm, result))
361 return promise; 366 return promise;
362 367
363 histogramAlgorithm(scriptState->getExecutionContext(), normalizedAlgorithm); 368 histogramAlgorithm(scriptState->getExecutionContext(), normalizedAlgorithm);
364 Platform::current()->crypto()->digest(normalizedAlgorithm, std::move(data), 369 Platform::current()->crypto()->digest(normalizedAlgorithm, std::move(data),
365 result->result()); 370 result->result());
366 return promise; 371 return promise;
367 } 372 }
368 373
369 ScriptPromise SubtleCrypto::generateKey(ScriptState* scriptState, 374 ScriptPromise SubtleCrypto::generateKey(ScriptState* scriptState,
370 const AlgorithmIdentifier& rawAlgorithm, 375 const AlgorithmIdentifier& rawAlgorithm,
371 bool extractable, 376 bool extractable,
372 const Vector<String>& rawKeyUsages) { 377 const Vector<String>& rawKeyUsages) {
373 // Method described by: https://w3c.github.io/webcrypto/Overview.html#SubtleCr ypto-method-generateKey 378 // Method described by:
379 // https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-generateK ey
374 380
375 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 381 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
376 ScriptPromise promise = result->promise(); 382 ScriptPromise promise = result->promise();
377 383
378 if (!canAccessWebCrypto(scriptState, result)) 384 if (!canAccessWebCrypto(scriptState, result))
379 return promise; 385 return promise;
380 386
381 WebCryptoKeyUsageMask keyUsages; 387 WebCryptoKeyUsageMask keyUsages;
382 if (!CryptoKey::parseUsageMask(rawKeyUsages, keyUsages, result)) 388 if (!CryptoKey::parseUsageMask(rawKeyUsages, keyUsages, result))
383 return promise; 389 return promise;
(...skipping 16 matching lines...) Expand all
400 return promise; 406 return promise;
401 } 407 }
402 408
403 ScriptPromise SubtleCrypto::importKey( 409 ScriptPromise SubtleCrypto::importKey(
404 ScriptState* scriptState, 410 ScriptState* scriptState,
405 const String& rawFormat, 411 const String& rawFormat,
406 const ArrayBufferOrArrayBufferViewOrDictionary& rawKeyData, 412 const ArrayBufferOrArrayBufferViewOrDictionary& rawKeyData,
407 const AlgorithmIdentifier& rawAlgorithm, 413 const AlgorithmIdentifier& rawAlgorithm,
408 bool extractable, 414 bool extractable,
409 const Vector<String>& rawKeyUsages) { 415 const Vector<String>& rawKeyUsages) {
410 // Method described by: https://w3c.github.io/webcrypto/Overview.html#SubtleCr ypto-method-importKey 416 // Method described by:
417 // https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-importKey
411 418
412 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 419 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
413 ScriptPromise promise = result->promise(); 420 ScriptPromise promise = result->promise();
414 421
415 if (!canAccessWebCrypto(scriptState, result)) 422 if (!canAccessWebCrypto(scriptState, result))
416 return promise; 423 return promise;
417 424
418 WebCryptoKeyFormat format; 425 WebCryptoKeyFormat format;
419 if (!CryptoKey::parseFormat(rawFormat, format, result)) 426 if (!CryptoKey::parseFormat(rawFormat, format, result))
420 return promise; 427 return promise;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 histogramAlgorithm(scriptState->getExecutionContext(), normalizedAlgorithm); 489 histogramAlgorithm(scriptState->getExecutionContext(), normalizedAlgorithm);
483 Platform::current()->crypto()->importKey(format, std::move(keyData), 490 Platform::current()->crypto()->importKey(format, std::move(keyData),
484 normalizedAlgorithm, extractable, 491 normalizedAlgorithm, extractable,
485 keyUsages, result->result()); 492 keyUsages, result->result());
486 return promise; 493 return promise;
487 } 494 }
488 495
489 ScriptPromise SubtleCrypto::exportKey(ScriptState* scriptState, 496 ScriptPromise SubtleCrypto::exportKey(ScriptState* scriptState,
490 const String& rawFormat, 497 const String& rawFormat,
491 CryptoKey* key) { 498 CryptoKey* key) {
492 // Method described by: https://w3c.github.io/webcrypto/Overview.html#dfn-Subt leCrypto-method-exportKey 499 // Method described by:
500 // https://w3c.github.io/webcrypto/Overview.html#dfn-SubtleCrypto-method-expor tKey
493 501
494 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 502 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
495 ScriptPromise promise = result->promise(); 503 ScriptPromise promise = result->promise();
496 504
497 if (!canAccessWebCrypto(scriptState, result)) 505 if (!canAccessWebCrypto(scriptState, result))
498 return promise; 506 return promise;
499 507
500 WebCryptoKeyFormat format; 508 WebCryptoKeyFormat format;
501 if (!CryptoKey::parseFormat(rawFormat, format, result)) 509 if (!CryptoKey::parseFormat(rawFormat, format, result))
502 return promise; 510 return promise;
(...skipping 11 matching lines...) Expand all
514 result->result()); 522 result->result());
515 return promise; 523 return promise;
516 } 524 }
517 525
518 ScriptPromise SubtleCrypto::wrapKey( 526 ScriptPromise SubtleCrypto::wrapKey(
519 ScriptState* scriptState, 527 ScriptState* scriptState,
520 const String& rawFormat, 528 const String& rawFormat,
521 CryptoKey* key, 529 CryptoKey* key,
522 CryptoKey* wrappingKey, 530 CryptoKey* wrappingKey,
523 const AlgorithmIdentifier& rawWrapAlgorithm) { 531 const AlgorithmIdentifier& rawWrapAlgorithm) {
524 // Method described by: https://w3c.github.io/webcrypto/Overview.html#SubtleCr ypto-method-wrapKey 532 // Method described by:
533 // https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-wrapKey
525 534
526 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 535 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
527 ScriptPromise promise = result->promise(); 536 ScriptPromise promise = result->promise();
528 537
529 if (!canAccessWebCrypto(scriptState, result)) 538 if (!canAccessWebCrypto(scriptState, result))
530 return promise; 539 return promise;
531 540
532 WebCryptoKeyFormat format; 541 WebCryptoKeyFormat format;
533 if (!CryptoKey::parseFormat(rawFormat, format, result)) 542 if (!CryptoKey::parseFormat(rawFormat, format, result))
534 return promise; 543 return promise;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 586
578 ScriptPromise SubtleCrypto::unwrapKey( 587 ScriptPromise SubtleCrypto::unwrapKey(
579 ScriptState* scriptState, 588 ScriptState* scriptState,
580 const String& rawFormat, 589 const String& rawFormat,
581 const BufferSource& rawWrappedKey, 590 const BufferSource& rawWrappedKey,
582 CryptoKey* unwrappingKey, 591 CryptoKey* unwrappingKey,
583 const AlgorithmIdentifier& rawUnwrapAlgorithm, 592 const AlgorithmIdentifier& rawUnwrapAlgorithm,
584 const AlgorithmIdentifier& rawUnwrappedKeyAlgorithm, 593 const AlgorithmIdentifier& rawUnwrappedKeyAlgorithm,
585 bool extractable, 594 bool extractable,
586 const Vector<String>& rawKeyUsages) { 595 const Vector<String>& rawKeyUsages) {
587 // Method described by: https://w3c.github.io/webcrypto/Overview.html#SubtleCr ypto-method-unwrapKey 596 // Method described by:
597 // https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-unwrapKey
588 598
589 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 599 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
590 ScriptPromise promise = result->promise(); 600 ScriptPromise promise = result->promise();
591 601
592 if (!canAccessWebCrypto(scriptState, result)) 602 if (!canAccessWebCrypto(scriptState, result))
593 return promise; 603 return promise;
594 604
595 WebCryptoKeyFormat format; 605 WebCryptoKeyFormat format;
596 if (!CryptoKey::parseFormat(rawFormat, format, result)) 606 if (!CryptoKey::parseFormat(rawFormat, format, result))
597 return promise; 607 return promise;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 Platform::current()->crypto()->unwrapKey( 657 Platform::current()->crypto()->unwrapKey(
648 format, std::move(wrappedKey), unwrappingKey->key(), normalizedAlgorithm, 658 format, std::move(wrappedKey), unwrappingKey->key(), normalizedAlgorithm,
649 normalizedKeyAlgorithm, extractable, keyUsages, result->result()); 659 normalizedKeyAlgorithm, extractable, keyUsages, result->result());
650 return promise; 660 return promise;
651 } 661 }
652 662
653 ScriptPromise SubtleCrypto::deriveBits(ScriptState* scriptState, 663 ScriptPromise SubtleCrypto::deriveBits(ScriptState* scriptState,
654 const AlgorithmIdentifier& rawAlgorithm, 664 const AlgorithmIdentifier& rawAlgorithm,
655 CryptoKey* baseKey, 665 CryptoKey* baseKey,
656 unsigned lengthBits) { 666 unsigned lengthBits) {
657 // Method described by: https://w3c.github.io/webcrypto/Overview.html#dfn-Subt leCrypto-method-deriveBits 667 // Method described by:
668 // https://w3c.github.io/webcrypto/Overview.html#dfn-SubtleCrypto-method-deriv eBits
658 669
659 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 670 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
660 ScriptPromise promise = result->promise(); 671 ScriptPromise promise = result->promise();
661 672
662 if (!canAccessWebCrypto(scriptState, result)) 673 if (!canAccessWebCrypto(scriptState, result))
663 return promise; 674 return promise;
664 675
665 // 14.3.8.2: Let normalizedAlgorithm be the result of normalizing an 676 // 14.3.8.2: Let normalizedAlgorithm be the result of normalizing an
666 // algorithm, with alg set to algorithm and op set to 677 // algorithm, with alg set to algorithm and op set to
667 // "deriveBits". 678 // "deriveBits".
(...skipping 19 matching lines...) Expand all
687 return promise; 698 return promise;
688 } 699 }
689 700
690 ScriptPromise SubtleCrypto::deriveKey( 701 ScriptPromise SubtleCrypto::deriveKey(
691 ScriptState* scriptState, 702 ScriptState* scriptState,
692 const AlgorithmIdentifier& rawAlgorithm, 703 const AlgorithmIdentifier& rawAlgorithm,
693 CryptoKey* baseKey, 704 CryptoKey* baseKey,
694 const AlgorithmIdentifier& rawDerivedKeyType, 705 const AlgorithmIdentifier& rawDerivedKeyType,
695 bool extractable, 706 bool extractable,
696 const Vector<String>& rawKeyUsages) { 707 const Vector<String>& rawKeyUsages) {
697 // Method described by: https://w3c.github.io/webcrypto/Overview.html#SubtleCr ypto-method-deriveKey 708 // Method described by:
709 // https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-deriveKey
698 710
699 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); 711 CryptoResultImpl* result = CryptoResultImpl::create(scriptState);
700 ScriptPromise promise = result->promise(); 712 ScriptPromise promise = result->promise();
701 713
702 if (!canAccessWebCrypto(scriptState, result)) 714 if (!canAccessWebCrypto(scriptState, result))
703 return promise; 715 return promise;
704 716
705 WebCryptoKeyUsageMask keyUsages; 717 WebCryptoKeyUsageMask keyUsages;
706 if (!CryptoKey::parseUsageMask(rawKeyUsages, keyUsages, result)) 718 if (!CryptoKey::parseUsageMask(rawKeyUsages, keyUsages, result))
707 return promise; 719 return promise;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 normalizedAlgorithm, baseKey->key()); 765 normalizedAlgorithm, baseKey->key());
754 histogramAlgorithm(scriptState->getExecutionContext(), 766 histogramAlgorithm(scriptState->getExecutionContext(),
755 normalizedDerivedKeyAlgorithm); 767 normalizedDerivedKeyAlgorithm);
756 Platform::current()->crypto()->deriveKey( 768 Platform::current()->crypto()->deriveKey(
757 normalizedAlgorithm, baseKey->key(), normalizedDerivedKeyAlgorithm, 769 normalizedAlgorithm, baseKey->key(), normalizedDerivedKeyAlgorithm,
758 keyLengthAlgorithm, extractable, keyUsages, result->result()); 770 keyLengthAlgorithm, extractable, keyUsages, result->result());
759 return promise; 771 return promise;
760 } 772 }
761 773
762 } // namespace blink 774 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698