summaryrefslogblamecommitdiff
path: root/www-client/chromium/files/chromium-revert-e7963c4-78.patch
blob: fe7e1a68722b85106af94e64c5991ef00192907f (plain) (tree)














































































































































































































































































































































                                                                                                                                                                                                            
diff --git a/chrome/test/chromedriver/client/chromedriver.py b/chrome/test/chromedriver/client/chromedriver.py
index 74b780e5f..8bd1cc004 100644
--- a/chrome/test/chromedriver/client/chromedriver.py
+++ b/chrome/test/chromedriver/client/chromedriver.py
@@ -653,7 +653,3 @@ class ChromeDriver(object):
     if signCount is not None:
       options['signCount'] = signCount
     return self.ExecuteCommand(Command.ADD_CREDENTIAL, options)
-
-  def GetCredentials(self, authenticatorId):
-    params = {'authenticatorId': authenticatorId}
-    return self.ExecuteCommand(Command.GET_CREDENTIALS, params)
diff --git a/chrome/test/chromedriver/client/command_executor.py b/chrome/test/chromedriver/client/command_executor.py
index 2286d839f..de27e1a3c 100644
--- a/chrome/test/chromedriver/client/command_executor.py
+++ b/chrome/test/chromedriver/client/command_executor.py
@@ -176,9 +176,6 @@ class Command(object):
   ADD_CREDENTIAL = (
       _Method.POST,
       '/session/:sessionId/webauthn/authenticator/:authenticatorId/credential')
-  GET_CREDENTIALS = (
-      _Method.GET,
-      '/session/:sessionId/webauthn/authenticator/:authenticatorId/credentials')
 
   # Custom Chrome commands.
   IS_LOADING = (_Method.GET, '/session/:sessionId/is_loading')
diff --git a/chrome/test/chromedriver/server/http_handler.cc b/chrome/test/chromedriver/server/http_handler.cc
index 737e34dce..0c9a00119 100644
--- a/chrome/test/chromedriver/server/http_handler.cc
+++ b/chrome/test/chromedriver/server/http_handler.cc
@@ -764,14 +764,6 @@ HttpHandler::HttpHandler(
               "AddCredential",
               base::BindRepeating(&ExecuteWebAuthnCommand,
                                   base::BindRepeating(&ExecuteAddCredential)))),
-      CommandMapping(
-          kGet,
-          "session/:sessionId/webauthn/authenticator/:authenticatorId/"
-          "credentials",
-          WrapToCommand("GetCredentials",
-                        base::BindRepeating(
-                            &ExecuteWebAuthnCommand,
-                            base::BindRepeating(&ExecuteGetCredentials)))),
 
       //
       // Non-standard extension commands
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index 15e986899..d59650004 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -226,7 +226,6 @@ _ANDROID_NEGATIVE_FILTER['chrome'] = (
         'ChromeDriverSecureContextTest.testAddVirtualAuthenticator',
         'ChromeDriverSecureContextTest.testRemoveVirtualAuthenticator',
         'ChromeDriverSecureContextTest.testAddCredential',
-        'ChromeDriverSecureContextTest.testGetCredentials',
     ]
 )
 _ANDROID_NEGATIVE_FILTER['chrome_stable'] = (
@@ -2018,11 +2017,6 @@ class ChromeDriverTest(ChromeDriverBaseTestWithWebServer):
 
 # Tests that require a secure context.
 class ChromeDriverSecureContextTest(ChromeDriverBaseTest):
-  # The example attestation private key from the U2F spec at
-  # https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html#registration-example
-  # PKCS.8 encoded without encryption, as a base64url string.
-  privateKey = "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8_zMDQDYAxlU-Qhk1Dwkf0v18GZca1DMF3SaJ9HPdmShRANCAASNYX5lyVCOZLzFZzrIKmeZ2jwURmgsJYxGP__fWN_S-j5sN4tT15XEpN_7QZnt14YvI6uvAgO0uJEboFaZlOEB"
-
   @staticmethod
   def GlobalSetUp():
     cert_path = os.path.join(chrome_paths.GetTestData(),
@@ -2039,21 +2033,6 @@ class ChromeDriverSecureContextTest(ChromeDriverBaseTest):
     return ChromeDriverSecureContextTest._https_server.GetUrl(
         host) + file_path
 
-  # Encodes a string in URL-safe base64 with no padding.
-  @staticmethod
-  def URLSafeBase64Encode(string):
-    encoded = base64.urlsafe_b64encode(string)
-    while encoded[-1] == "=":
-      encoded = encoded[0:-1]
-    return encoded
-
-  # Decodes a base64 string with no padding.
-  @staticmethod
-  def UrlSafeBase64Decode(string):
-    string = string.encode("utf-8")
-    string += "=" * (4 - len(string) % 4)
-    return base64.urlsafe_b64decode(string)
-
   def setUp(self):
     self._driver = self.CreateDriver(
         chrome_switches=['host-resolver-rules=MAP * 127.0.0.1'])
@@ -2101,6 +2080,10 @@ class ChromeDriverSecureContextTest(ChromeDriverBaseTest):
         self._driver.RemoveVirtualAuthenticator, response['authenticatorId'])
 
   def testAddCredential(self):
+    # The example attestation private key from the U2F spec at
+    # https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html#registration-example
+    # PKCS.8 encoded without encryption.
+    privateKey = "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8/zMDQDYAxlU+Qhk1Dwkf0v18GZca1DMF3SaJ9HPdmShRANCAASNYX5lyVCOZLzFZzrIKmeZ2jwURmgsJYxGP//fWN/S+j5sN4tT15XEpN/7QZnt14YvI6uvAgO0uJEboFaZlOEB"
 
     script = """
       let done = arguments[0];
@@ -2123,78 +2106,16 @@ class ChromeDriverSecureContextTest(ChromeDriverBaseTest):
     # Register a credential and try authenticating with it.
     self._driver.AddCredential(
       authenticatorId = authenticatorId,
-      credentialId = self.URLSafeBase64Encode("cred-1"),
+      credentialId = base64.b64encode("cred-1"),
       isResidentCredential=False,
       rpId="chromedriver.test",
-      privateKey=self.privateKey,
+      privateKey=privateKey,
       signCount=1,
     )
 
     result = self._driver.ExecuteAsyncScript(script)
     self.assertEquals('OK', result['status'])
 
-  def testAddCredentialBase64Errors(self):
-    # Test that AddCredential checks UrlBase64 parameteres.
-    self._driver.Load(self.GetHttpsUrlForFile(
-        '/chromedriver/webauthn_test.html', 'chromedriver.test'))
-
-    authenticatorId = self._driver.AddVirtualAuthenticator(
-        protocol = 'ctap2',
-        transport = 'usb',
-        hasResidentKey = False,
-        hasUserVerification = False,
-    )['authenticatorId']
-
-    # Try adding a credentialId that is encoded in vanilla base64.
-    self.assertRaisesRegexp(
-        chromedriver.InvalidArgument,
-        'credentialId must be a base64url encoded string',
-        self._driver.AddCredential, authenticatorId, '_0n+wWqg=',
-        False, "chromedriver.test", self.privateKey, None, 1,
-    )
-
-    # Try adding a credentialId that is not a string.
-    self.assertRaisesRegexp(
-        chromedriver.InvalidArgument,
-        'credentialId must be a base64url encoded string',
-        self._driver.AddCredential, authenticatorId, 1,
-        False, "chromedriver.test", self.privateKey, None, 1,
-    )
-
-  def testGetCredentials(self):
-    script = """
-      let done = arguments[0];
-      registerCredential({
-        authenticatorSelection: {
-          requireResidentKey: true,
-        },
-      }).then(done);
-    """
-    self._driver.Load(self.GetHttpsUrlForFile(
-        '/chromedriver/webauthn_test.html', 'chromedriver.test'))
-    authenticatorId = self._driver.AddVirtualAuthenticator(
-        protocol = 'ctap2',
-        transport = 'usb',
-        hasResidentKey = True,
-        hasUserVerification = True,
-    )['authenticatorId']
-
-    # Register a credential via the webauthn API.
-    result = self._driver.ExecuteAsyncScript(script)
-    self.assertEquals('OK', result['status'])
-    credentialId = result['credential']['id']
-
-    # GetCredentials should return the credential that was just created.
-    credentials = self._driver.GetCredentials(authenticatorId)['credentials']
-    self.assertEquals(1, len(credentials))
-    self.assertEquals(credentialId, credentials[0]['credentialId'])
-    self.assertEquals(True, credentials[0]['isResidentCredential'])
-    self.assertEquals('chromedriver.test', credentials[0]['rpId'])
-    self.assertEquals(chr(1),
-                      self.UrlSafeBase64Decode(credentials[0]['userHandle']))
-    self.assertEquals(1, credentials[0]['signCount'])
-    self.assertTrue(credentials[0]['privateKey'])
-
 # Tests in the following class are expected to be moved to ChromeDriverTest
 # class when we no longer support the legacy mode.
 class ChromeDriverW3cTest(ChromeDriverBaseTestWithWebServer):
diff --git a/chrome/test/chromedriver/webauthn_commands.cc b/chrome/test/chromedriver/webauthn_commands.cc
index b0d4d62bc..32c8a4a61 100644
--- a/chrome/test/chromedriver/webauthn_commands.cc
+++ b/chrome/test/chromedriver/webauthn_commands.cc
@@ -6,8 +6,6 @@
 
 #include <utility>
 
-#include "base/base64.h"
-#include "base/base64url.h"
 #include "base/callback.h"
 #include "base/containers/flat_map.h"
 #include "base/values.h"
@@ -17,8 +15,6 @@
 
 namespace {
 
-static constexpr char kBase64UrlError[] = " must be a base64url encoded string";
-
 // Creates a base::DictionaryValue by cloning the parameters specified by
 // |mapping| from |params|.
 base::DictionaryValue MapParams(
@@ -33,48 +29,6 @@ base::DictionaryValue MapParams(
   return options;
 }
 
-// Converts the string |keys| in |params| from base64url to base64. Returns a
-// status error if conversion of one of the keys failed.
-Status ConvertBase64UrlToBase64(base::Value* params,
-                                const std::vector<const std::string> keys) {
-  for (const std::string key : keys) {
-    base::Value* maybe_value = params->FindKey(key);
-    if (!maybe_value)
-      continue;
-
-    if (!maybe_value->is_string())
-      return Status(kInvalidArgument, key + kBase64UrlError);
-
-    std::string& value = maybe_value->GetString();
-    std::string temp;
-    if (!Base64UrlDecode(value, base::Base64UrlDecodePolicy::IGNORE_PADDING,
-                         &temp)) {
-      return Status(kInvalidArgument, key + kBase64UrlError);
-    }
-
-    base::Base64Encode(temp, &value);
-  }
-
-  return Status(kOk);
-}
-
-// Converts the string |keys| in |params| from base64 to base64url.
-void ConvertBase64ToBase64Url(base::Value* params,
-                              const std::vector<const std::string> keys) {
-  for (const std::string key : keys) {
-    std::string* maybe_value = params->FindStringKey(key);
-    if (!maybe_value)
-      continue;
-
-    std::string temp;
-    bool result = base::Base64Decode(*maybe_value, &temp);
-    DCHECK(result);
-
-    base::Base64UrlEncode(temp, base::Base64UrlEncodePolicy::OMIT_PADDING,
-                          maybe_value);
-  }
-}
-
 }  // namespace
 
 Status ExecuteWebAuthnCommand(const WebAuthnCommand& command,
@@ -125,40 +79,18 @@ Status ExecuteRemoveVirtualAuthenticator(WebView* web_view,
 Status ExecuteAddCredential(WebView* web_view,
                             const base::Value& params,
                             std::unique_ptr<base::Value>* value) {
-  base::DictionaryValue mapped_params = MapParams(
-      {
-          {"authenticatorId", "authenticatorId"},
-          {"credential.credentialId", "credentialId"},
-          {"credential.isResidentCredential", "isResidentCredential"},
-          {"credential.rpId", "rpId"},
-          {"credential.privateKey", "privateKey"},
-          {"credential.userHandle", "userHandle"},
-          {"credential.signCount", "signCount"},
-      },
-      params);
-  Status status =
-      ConvertBase64UrlToBase64(mapped_params.FindKey("credential"),
-                               {"credentialId", "privateKey", "userHandle"});
-  if (status.IsError())
-    return status;
-
-  return web_view->SendCommandAndGetResult("WebAuthn.addCredential",
-                                           std::move(mapped_params), value);
-}
-
-Status ExecuteGetCredentials(WebView* web_view,
-                             const base::Value& params,
-                             std::unique_ptr<base::Value>* value) {
-  Status status = web_view->SendCommandAndGetResult(
-      "WebAuthn.getCredentials",
-      MapParams({{"authenticatorId", "authenticatorId"}}, params), value);
-  if (status.IsError())
-    return status;
-
-  for (base::Value& credential : (*value)->FindKey("credentials")->GetList()) {
-    ConvertBase64ToBase64Url(&credential,
-                             {"credentialId", "privateKey", "userHandle"});
-  }
-
-  return status;
+  return web_view->SendCommandAndGetResult(
+      "WebAuthn.addCredential",
+      MapParams(
+          {
+              {"authenticatorId", "authenticatorId"},
+              {"credential.credentialId", "credentialId"},
+              {"credential.isResidentCredential", "isResidentCredential"},
+              {"credential.rpId", "rpId"},
+              {"credential.privateKey", "privateKey"},
+              {"credential.userHandle", "userHandle"},
+              {"credential.signCount", "signCount"},
+          },
+          params),
+      value);
 }
diff --git a/chrome/test/chromedriver/webauthn_commands.h b/chrome/test/chromedriver/webauthn_commands.h
index dcc278428..fd75ecfed 100644
--- a/chrome/test/chromedriver/webauthn_commands.h
+++ b/chrome/test/chromedriver/webauthn_commands.h
@@ -44,9 +44,4 @@ Status ExecuteAddCredential(WebView* web_view,
                             const base::Value& params,
                             std::unique_ptr<base::Value>* value);
 
-// Retrieve all the credentials stored in an authenticator.
-Status ExecuteGetCredentials(WebView* web_view,
-                             const base::Value& params,
-                             std::unique_ptr<base::Value>* value);
-
 #endif  // CHROME_TEST_CHROMEDRIVER_WEBAUTHN_COMMANDS_H_
diff --git a/device/fido/virtual_ctap2_device.cc b/device/fido/virtual_ctap2_device.cc
index 672b61cb5..843bd0f4e 100644
--- a/device/fido/virtual_ctap2_device.cc
+++ b/device/fido/virtual_ctap2_device.cc
@@ -864,7 +864,6 @@ base::Optional<CtapDeviceResponseCode> VirtualCtap2Device::OnMakeCredential(
 
     registration.is_resident = true;
     registration.user = request.user;
-    registration.rp = request.rp;
   }
 
   if (request.cred_protect) {