| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 AlgorithmError error; | 665 AlgorithmError error; |
| 666 if (!normalizeAlgorithm(keygenAlgorithm, WebCryptoOperationGenerateKey, cryp
toAlgorithm, &error)) { | 666 if (!normalizeAlgorithm(keygenAlgorithm, WebCryptoOperationGenerateKey, cryp
toAlgorithm, &error)) { |
| 667 // Reject generateCertificate with the same error as was produced by Web
Crypto. | 667 // Reject generateCertificate with the same error as was produced by Web
Crypto. |
| 668 // |result| is garbage collected, no need to delete. | 668 // |result| is garbage collected, no need to delete. |
| 669 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); | 669 CryptoResultImpl* result = CryptoResultImpl::create(scriptState); |
| 670 ScriptPromise promise = result->promise(); | 670 ScriptPromise promise = result->promise(); |
| 671 result->completeWithError(error.errorType, error.errorDetails); | 671 result->completeWithError(error.errorType, error.errorDetails); |
| 672 return promise; | 672 return promise; |
| 673 } | 673 } |
| 674 | 674 |
| 675 // Check if |keygenAlgorithm| contains the optional DOMTimeStamp |expires| a
ttribute. |
| 676 Nullable<DOMTimeStamp> expires; |
| 677 if (keygenAlgorithm.isDictionary()) { |
| 678 Dictionary keygenAlgorithmDict = keygenAlgorithm.getAsDictionary(); |
| 679 if (keygenAlgorithmDict.hasProperty("expires")) { |
| 680 v8::Local<v8::Value> expiresValue; |
| 681 keygenAlgorithmDict.get("expires", expiresValue); |
| 682 if (expiresValue->IsNumber()) { |
| 683 double expiresDouble = expiresValue->ToNumber(scriptState->isola
te()->GetCurrentContext()).ToLocalChecked()->Value(); |
| 684 if (expiresDouble >= 0) { |
| 685 expires.set(static_cast<DOMTimeStamp>(expiresDouble)); |
| 686 } |
| 687 } |
| 688 } |
| 689 } |
| 690 |
| 675 // Convert from WebCrypto representation to recognized WebRTCKeyParams. WebR
TC supports a small subset of what are valid AlgorithmIdentifiers. | 691 // Convert from WebCrypto representation to recognized WebRTCKeyParams. WebR
TC supports a small subset of what are valid AlgorithmIdentifiers. |
| 676 const char* unsupportedParamsString = "The 1st argument provided is an Algor
ithmIdentifier with a supported algorithm name, but the parameters are not suppo
rted."; | 692 const char* unsupportedParamsString = "The 1st argument provided is an Algor
ithmIdentifier with a supported algorithm name, but the parameters are not suppo
rted."; |
| 677 Nullable<WebRTCKeyParams> keyParams; | 693 Nullable<WebRTCKeyParams> keyParams; |
| 678 switch (cryptoAlgorithm.id()) { | 694 switch (cryptoAlgorithm.id()) { |
| 679 case WebCryptoAlgorithmIdRsaSsaPkcs1v1_5: | 695 case WebCryptoAlgorithmIdRsaSsaPkcs1v1_5: |
| 680 // name: "RSASSA-PKCS1-v1_5" | 696 // name: "RSASSA-PKCS1-v1_5" |
| 681 unsigned publicExponent; | 697 unsigned publicExponent; |
| 682 // "publicExponent" must fit in an unsigned int. The only recognized "ha
sh" is "SHA-256". | 698 // "publicExponent" must fit in an unsigned int. The only recognized "ha
sh" is "SHA-256". |
| 683 if (cryptoAlgorithm.rsaHashedKeyGenParams()->convertPublicExponentToUnsi
gned(publicExponent) | 699 if (cryptoAlgorithm.rsaHashedKeyGenParams()->convertPublicExponentToUnsi
gned(publicExponent) |
| 684 && cryptoAlgorithm.rsaHashedKeyGenParams()->hash().id() == WebCrypto
AlgorithmIdSha256) { | 700 && cryptoAlgorithm.rsaHashedKeyGenParams()->hash().id() == WebCrypto
AlgorithmIdSha256) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 711 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::
create(NotSupportedError, unsupportedParamsString)); | 727 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::
create(NotSupportedError, unsupportedParamsString)); |
| 712 } | 728 } |
| 713 | 729 |
| 714 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 730 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
| 715 ScriptPromise promise = resolver->promise(); | 731 ScriptPromise promise = resolver->promise(); |
| 716 | 732 |
| 717 std::unique_ptr<WebRTCCertificateObserver> certificateObserver(WebRTCCertifi
cateObserver::create(resolver)); | 733 std::unique_ptr<WebRTCCertificateObserver> certificateObserver(WebRTCCertifi
cateObserver::create(resolver)); |
| 718 | 734 |
| 719 // Generate certificate. The |certificateObserver| will resolve the promise
asynchronously upon completion. | 735 // Generate certificate. The |certificateObserver| will resolve the promise
asynchronously upon completion. |
| 720 // The observer will manage its own destruction as well as the resolver's de
struction. | 736 // The observer will manage its own destruction as well as the resolver's de
struction. |
| 721 certificateGenerator->generateCertificate( | 737 if (expires.isNull()) { |
| 722 keyParams.get(), | 738 certificateGenerator->generateCertificate( |
| 723 toDocument(scriptState->getExecutionContext())->url(), | 739 keyParams.get(), |
| 724 toDocument(scriptState->getExecutionContext())->firstPartyForCookies(), | 740 toDocument(scriptState->getExecutionContext())->url(), |
| 725 std::move(certificateObserver)); | 741 toDocument(scriptState->getExecutionContext())->firstPartyForCookies
(), |
| 742 std::move(certificateObserver)); |
| 743 } else { |
| 744 certificateGenerator->generateCertificateWithExpiration( |
| 745 keyParams.get(), |
| 746 toDocument(scriptState->getExecutionContext())->url(), |
| 747 toDocument(scriptState->getExecutionContext())->firstPartyForCookies
(), |
| 748 expires.get(), |
| 749 std::move(certificateObserver)); |
| 750 } |
| 726 | 751 |
| 727 return promise; | 752 return promise; |
| 728 } | 753 } |
| 729 | 754 |
| 730 ScriptPromise RTCPeerConnection::addIceCandidate(ScriptState* scriptState, const
RTCIceCandidateInitOrRTCIceCandidate& candidate) | 755 ScriptPromise RTCPeerConnection::addIceCandidate(ScriptState* scriptState, const
RTCIceCandidateInitOrRTCIceCandidate& candidate) |
| 731 { | 756 { |
| 732 if (m_signalingState == SignalingStateClosed) | 757 if (m_signalingState == SignalingStateClosed) |
| 733 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::
create(InvalidStateError, kSignalingStateClosedMessage)); | 758 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::
create(InvalidStateError, kSignalingStateClosedMessage)); |
| 734 | 759 |
| 735 if (isIceCandidateMissingSdp(candidate)) | 760 if (isIceCandidateMissingSdp(candidate)) |
| (...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 { | 1200 { |
| 1176 visitor->trace(m_localStreams); | 1201 visitor->trace(m_localStreams); |
| 1177 visitor->trace(m_remoteStreams); | 1202 visitor->trace(m_remoteStreams); |
| 1178 visitor->trace(m_dispatchScheduledEventRunner); | 1203 visitor->trace(m_dispatchScheduledEventRunner); |
| 1179 visitor->trace(m_scheduledEvents); | 1204 visitor->trace(m_scheduledEvents); |
| 1180 EventTargetWithInlineData::trace(visitor); | 1205 EventTargetWithInlineData::trace(visitor); |
| 1181 ActiveDOMObject::trace(visitor); | 1206 ActiveDOMObject::trace(visitor); |
| 1182 } | 1207 } |
| 1183 | 1208 |
| 1184 } // namespace blink | 1209 } // namespace blink |
| OLD | NEW |