Tweak DevTools display of TLS key exchange information

This removes "key exchange group" from the DevTools UI, which is kind of
a weird terminology.

For background, A TLS connection negotiates a cipher suite and, when
doing an ephemeral ECDH key exchange, a "named group". In TLS 1.2, the
cipher suite is named like TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. The
DevTools protocol tried to decompose this name and calls the "ECDHE_RSA"
portion the "keyExchange", because it determined the rough shape of the
key exchange portion of the handshake. (A keyExchange of "RSA" meant a
very different handshake set.)

But ECDHE_RSA was still parameterized by a named group (e.g. X25519).
The name "keyExchange" was already established, so this ended up being
"keyExchangeGroup". ("Group" here refers to the abstract algebra notion
of group. Even that was probably mis-named as we really read these as
general KEM instances.)

Then, starting TLS 1.3, the cipher suites are named like
TLS_AES_128_GCM_SHA256. The handshake shape is now implicit in the
protocol.  keyExchange is empty and we only have keyExchangeGroup.

We made the DevTools UI just match this representation, with an optional
"Key exchange" and "Key exchange group" rows. But "key exchange group"
isn't common terminology and, in TLS 1.3, something like "X25519" is
better labelled as "key exchange" than "key exchange group" anyway.

Combine the two fields when displaying in the UI. If we have just a
keyExchange (the legacy "RSA" key exchange), this CL keeps things as-is.
If we have just keyExchangeGroup (TLS 1.3), just call that "Key
exchange" in the UI and drop the confusing "group" word. If we have both
(TLS 1.2 ECDHE), match the handling of the cipher row and stick the word
"with" in between.

Screenshots:
https://drive.google.com/drive/folders/1L_rR932KA4ZdLwQvbEI9y1Tiv1RWohv1?resourcekey=0-7CTlJXp3vuz1zJnHUcXa6w&usp=sharing

Bug: 1344541
Change-Id: I433799124ea9fff8be63fe3d812fc066f65e87c5
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3758117
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Commit-Queue: David Benjamin <davidben@chromium.org>
3 files changed
tree: 88ddf25df70c3b3642f7c37532735a923a159bc1
  1. .vscode/
  2. build_overrides/
  3. config/
  4. docs/
  5. extension-api/
  6. front_end/
  7. inspector_overlay/
  8. node_modules/
  9. scripts/
  10. test/
  11. third_party/
  12. v8/
  13. .clang-format
  14. .editorconfig
  15. .eslintignore
  16. .eslintrc.js
  17. .gitattributes
  18. .gitignore
  19. .gn
  20. .mailmap
  21. .npmignore
  22. .npmrc
  23. .style.yapf
  24. .stylelintignore
  25. .stylelintrc.json
  26. ARCHITECTURE.md
  27. AUTHORS
  28. BUILD.gn
  29. codereview.settings
  30. DEPS
  31. LICENSE
  32. OWNERS
  33. package-lock.json
  34. package.json
  35. PRESUBMIT.py
  36. README.md
  37. tsconfig.json
  38. WATCHLISTS
README.md

Chrome DevTools frontend

npm package

The client-side of the Chrome DevTools, including all JS & CSS to run the DevTools webapp.

Source code

The frontend is available on chromium.googlesource.com.

Design guidelines

Please be aware that DevTools follows additional development guidelines.

Issue triage

The issue triage guidelines can be found in docs/triage_guidelines.md.

Workflows

Instructions to set up, use, and maintain a DevTools frontend checkout can be found in docs/workflows.md.

Additional references

Source mirrors

DevTools frontend repository is mirrored on GitHub.

DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.

The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.

Getting in touch