add athm build and test issuer [chromium/src : main]

0 views
Skip to first unread message

Aykut Bulut (Gerrit)

unread,
Jun 12, 2026, 10:30:30 AMJun 12
to Sam Schlesinger, chromium...@chromium.org
Attention needed from Sam Schlesinger

Aykut Bulut added 1 comment

File components/private_verification_tokens/BUILD.gn
Line 27, Patchset 1 (Latest):# ATHM (Anonymous Tokens with Hidden Metadata): a cxx bridge over
Aykut Bulut . unresolved

I think moving this block to common/BUILD.gn and the source files `athm_ffi.rs`, `athm_test_issuer*` to common would be better.

Open in Gerrit

Related details

Attention is currently required from:
  • Sam Schlesinger
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
Gerrit-Change-Number: 7926688
Gerrit-PatchSet: 1
Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
Gerrit-Comment-Date: Fri, 12 Jun 2026 14:30:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Aykut Bulut (Gerrit)

unread,
Jun 12, 2026, 1:07:17 PMJun 12
to Sam Schlesinger, chromium...@chromium.org
Attention needed from Sam Schlesinger

Aykut Bulut added 10 comments

File components/private_verification_tokens/athm_test_issuer.h
Line 45, Patchset 1 (Latest): base::span<const uint8_t> deployment_id);
Aykut Bulut . unresolved

Is there any limit on the size of `deployment_id` in spec? If yes I assume we check it in the downstream code. Should we concern ourselves with that here?

Line 25, Patchset 1 (Latest):// wire encodings, which is the shape they would take over IPC or the network.
Aykut Bulut . unresolved

Last statement might be a bit misleading. The IPC will happen in a shape similar to the following, once we integrate with the ATHM client side crypto. I think we can just remove that. It is a bit pre-mature to talk chromium IPC here. We can refer to the ATHM spec for serialization etc. if appropriate. Code here should not assume much on how the upper levels in stack are implemented.

https://chromium-review.git.corp.google.com/c/chromium/src/+/7886969/26/components/private_verification_tokens/mojom/private_verification_tokens_service.mojom

File components/private_verification_tokens/athm_test_issuer.cc
Line 19, Patchset 1 (Latest): AthmKeyMaterial key_material =
Aykut Bulut . resolved

`AthmKeyMaterial` is in `private_verification_tokens` namespace, ideally we keep this internal to the ATHM implementation and un-accessible outside of it. We can fix this in the Client class that will be used in prod. No AI, writing this as a team note.

Similarly for other types introduced in `athm_ffi.rs`.

Line 46, Patchset 1 (Latest): AthmBytesResult result = athm_issue(
Aykut Bulut . unresolved

I assume `athm_issue` returns error when `hidden_metadata` is invalid with respect to num_buckets`. Practically we can do that check here but I guess having it fail in `athm_request` and procss the error code (that might be spec'ed to reach here).

No action required. Wanted to confirm whether how I think about this is correct.

Line 68, Patchset 1 (Latest): AthmClientRequest bridge_result = athm_client_request(
Aykut Bulut . unresolved

I think this can be better if it returns a `std::unique_ptr<>` or `std::optional<>` `ClientRequest.ok` is removed. Similar to `AthmTestIssuer::Create`. `unique_ptr` is good if it is not easy to support move/copy constructor/operator semantics for the class. `ClientRequest` is this case is a struct where default move/copy constructor/operators are supported. `std::optional<>` is more suitable here.

Currently `ClientRequest` might be in an invalid state when `ok` is false. With the change described above, we know once you have a `ClientRequest` it is valid.

Line 79, Patchset 1 (Latest): base::span<const uint8_t> context,
Aykut Bulut . unresolved

Would it be better if this takes `ClientRequest` as the argument instead of getting `context` and `request` separately?

File components/private_verification_tokens/athm_test_issuer_unittest.cc
Line 64, Patchset 1 (Latest): for (uint8_t metadata = 0; metadata < kBuckets; ++metadata) {
Aykut Bulut . unresolved
Line 87, Patchset 1 (Latest): EXPECT_FALSE(first.context.empty());
Aykut Bulut . unresolved

A better way to do this is using matchers.

```
EXPECT_THAT(first.context, testing::SizeIs(kExpectedSize));
```

Line 113, Patchset 1 (Latest): ASSERT_EQ(tampered.size(), 98u);
Aykut Bulut . unresolved

Defining global constants in anonymous namespaces would be good for this.

Line 113, Patchset 1 (Latest): ASSERT_EQ(tampered.size(), 98u);
Aykut Bulut . unresolved

We should consider writing fuzzers for this and other athm parts in general.

Open in Gerrit

Related details

Attention is currently required from:
  • Sam Schlesinger
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
Gerrit-Change-Number: 7926688
Gerrit-PatchSet: 1
Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
Gerrit-Comment-Date: Fri, 12 Jun 2026 17:07:05 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Sam Schlesinger (Gerrit)

unread,
Jun 23, 2026, 2:08:24 PMJun 23
to David Benjamin, chrome-third-pa...@google.com, Aykut Bulut, chromium...@chromium.org
Attention needed from Aykut Bulut, David Benjamin and chrome-third-pa...@google.com

Sam Schlesinger added 10 comments

File components/private_verification_tokens/BUILD.gn
Line 27, Patchset 1:# ATHM (Anonymous Tokens with Hidden Metadata): a cxx bridge over
Aykut Bulut . resolved

I think moving this block to common/BUILD.gn and the source files `athm_ffi.rs`, `athm_test_issuer*` to common would be better.

Sam Schlesinger

Done

File components/private_verification_tokens/athm_test_issuer.h
Line 45, Patchset 1: base::span<const uint8_t> deployment_id);
Aykut Bulut . resolved

Is there any limit on the size of `deployment_id` in spec? If yes I assume we check it in the downstream code. Should we concern ourselves with that here?

Sam Schlesinger

Done

Line 25, Patchset 1:// wire encodings, which is the shape they would take over IPC or the network.
Aykut Bulut . resolved

Last statement might be a bit misleading. The IPC will happen in a shape similar to the following, once we integrate with the ATHM client side crypto. I think we can just remove that. It is a bit pre-mature to talk chromium IPC here. We can refer to the ATHM spec for serialization etc. if appropriate. Code here should not assume much on how the upper levels in stack are implemented.

https://chromium-review.git.corp.google.com/c/chromium/src/+/7886969/26/components/private_verification_tokens/mojom/private_verification_tokens_service.mojom

Sam Schlesinger

Done

File components/private_verification_tokens/athm_test_issuer.cc
Line 46, Patchset 1: AthmBytesResult result = athm_issue(
Aykut Bulut . resolved

I assume `athm_issue` returns error when `hidden_metadata` is invalid with respect to num_buckets`. Practically we can do that check here but I guess having it fail in `athm_request` and procss the error code (that might be spec'ed to reach here).

No action required. Wanted to confirm whether how I think about this is correct.

Sam Schlesinger

Done

Line 68, Patchset 1: AthmClientRequest bridge_result = athm_client_request(
Aykut Bulut . resolved

I think this can be better if it returns a `std::unique_ptr<>` or `std::optional<>` `ClientRequest.ok` is removed. Similar to `AthmTestIssuer::Create`. `unique_ptr` is good if it is not easy to support move/copy constructor/operator semantics for the class. `ClientRequest` is this case is a struct where default move/copy constructor/operators are supported. `std::optional<>` is more suitable here.

Currently `ClientRequest` might be in an invalid state when `ok` is false. With the change described above, we know once you have a `ClientRequest` it is valid.

Sam Schlesinger

Done

Line 79, Patchset 1: base::span<const uint8_t> context,
Aykut Bulut . resolved

Would it be better if this takes `ClientRequest` as the argument instead of getting `context` and `request` separately?

Sam Schlesinger

Done

File components/private_verification_tokens/athm_test_issuer_unittest.cc
Line 64, Patchset 1: for (uint8_t metadata = 0; metadata < kBuckets; ++metadata) {
Aykut Bulut . resolved
Sam Schlesinger

Done

Line 87, Patchset 1: EXPECT_FALSE(first.context.empty());
Aykut Bulut . resolved

A better way to do this is using matchers.

```
EXPECT_THAT(first.context, testing::SizeIs(kExpectedSize));
```

Sam Schlesinger

Done

Line 113, Patchset 1: ASSERT_EQ(tampered.size(), 98u);
Aykut Bulut . resolved

Defining global constants in anonymous namespaces would be good for this.

Sam Schlesinger

Done

Line 113, Patchset 1: ASSERT_EQ(tampered.size(), 98u);
Aykut Bulut . resolved

We should consider writing fuzzers for this and other athm parts in general.

Sam Schlesinger

Done

Open in Gerrit

Related details

Attention is currently required from:
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
    Gerrit-Change-Number: 7926688
    Gerrit-PatchSet: 2
    Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
    Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
    Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
    Gerrit-Attention: Aykut Bulut <ayk...@chromium.org>
    Gerrit-Attention: David Benjamin <davi...@chromium.org>
    Gerrit-Comment-Date: Tue, 23 Jun 2026 18:08:12 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Aykut Bulut <ayk...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    gwsq (Gerrit)

    unread,
    Jun 23, 2026, 2:57:50 PMJun 23
    to Sam Schlesinger, chrome-third-pa...@google.com, Julia Hansbrough, David Benjamin, Aykut Bulut, chromium...@chromium.org
    Attention needed from Aykut Bulut, David Benjamin and Julia Hansbrough

    Message from gwsq

    From googleclient/chrome/chromium_gwsq/third_party/rust/config.gwsq:
    third-party-rust: flowe...@google.com

    It looks like you’re modifying `//third_party/rust`. An appropriate reviewer has been automatically added to this CL.

    `//third_party/rust` reviewer(s): flowe...@google.com


    Reviewer source(s):
    flowe...@google.com is from context(googleclient/chrome/chromium_gwsq/third_party/rust/config.gwsq)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Aykut Bulut
    • David Benjamin
    • Julia Hansbrough
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
    Gerrit-Change-Number: 7926688
    Gerrit-PatchSet: 2
    Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
    Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
    Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
    Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
    Gerrit-Attention: Aykut Bulut <ayk...@chromium.org>
    Gerrit-Attention: David Benjamin <davi...@chromium.org>
    Gerrit-Comment-Date: Tue, 23 Jun 2026 18:57:33 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Sam Schlesinger (Gerrit)

    unread,
    Jun 23, 2026, 3:40:41 PMJun 23
    to chrome-third-pa...@google.com, Julia Hansbrough, David Benjamin, Aykut Bulut, chromium...@chromium.org
    Attention needed from Aykut Bulut, David Benjamin and Julia Hansbrough

    Sam Schlesinger added 2 comments

    File components/private_verification_tokens/athm_test_issuer.h
    Line 45, Patchset 1: base::span<const uint8_t> deployment_id);
    Aykut Bulut . resolved

    Is there any limit on the size of `deployment_id` in spec? If yes I assume we check it in the downstream code. Should we concern ourselves with that here?

    Sam Schlesinger

    Done

    Sam Schlesinger

    The code enforces 255 bytes, but the spec doesn't say a specific number.

    File components/private_verification_tokens/athm_test_issuer.cc
    Line 46, Patchset 1: AthmBytesResult result = athm_issue(
    Aykut Bulut . resolved

    I assume `athm_issue` returns error when `hidden_metadata` is invalid with respect to num_buckets`. Practically we can do that check here but I guess having it fail in `athm_request` and procss the error code (that might be spec'ed to reach here).

    No action required. Wanted to confirm whether how I think about this is correct.

    Sam Schlesinger

    Done

    Sam Schlesinger

    Yes, confirmed.

    Gerrit-Comment-Date: Tue, 23 Jun 2026 19:40:32 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Aykut Bulut <ayk...@chromium.org>
    Comment-In-Reply-To: Sam Schlesinger <samschl...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Julia Hansbrough (Gerrit)

    unread,
    Jun 23, 2026, 7:42:27 PMJun 23
    to Sam Schlesinger, chrome-third-pa...@google.com, David Benjamin, Aykut Bulut, chromium...@chromium.org
    Attention needed from Aykut Bulut, David Benjamin and Sam Schlesinger

    Julia Hansbrough added 1 comment

    Patchset-level comments
    File-level comment, Patchset 2 (Latest):
    Julia Hansbrough . unresolved

    It looks like this is adding a new third-party Rust crate. Can the addition of the crate please be done in a separate CL?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Aykut Bulut
    • David Benjamin
    • Sam Schlesinger
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Attention: David Benjamin <davi...@chromium.org>
      Gerrit-Comment-Date: Tue, 23 Jun 2026 23:42:16 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Sam Schlesinger (Gerrit)

      unread,
      Jun 24, 2026, 10:35:23 AMJun 24
      to chrome-third-pa...@google.com, Julia Hansbrough, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from Aykut Bulut, David Benjamin and Julia Hansbrough

      Sam Schlesinger added 1 comment

      Patchset-level comments
      Julia Hansbrough . unresolved

      It looks like this is adding a new third-party Rust crate. Can the addition of the crate please be done in a separate CL?

      Sam Schlesinger

      Sure, will do. I'm adding two crates, for context: athm and zeroize, zeroize is a dependency of athm. Sounds like you want a separate CL for zeroize then the athm stuff here, or should we split it up further?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Aykut Bulut
      • David Benjamin
      • Julia Hansbrough
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
      Gerrit-Attention: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Attention: David Benjamin <davi...@chromium.org>
      Gerrit-Comment-Date: Wed, 24 Jun 2026 14:35:07 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Julia Hansbrough <flowe...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Julia Hansbrough (Gerrit)

      unread,
      Jun 24, 2026, 2:33:46 PMJun 24
      to Sam Schlesinger, chrome-third-pa...@google.com, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from Aykut Bulut, David Benjamin and Sam Schlesinger

      Julia Hansbrough added 1 comment

      Patchset-level comments
      Julia Hansbrough . unresolved

      It looks like this is adding a new third-party Rust crate. Can the addition of the crate please be done in a separate CL?

      Sam Schlesinger

      Sure, will do. I'm adding two crates, for context: athm and zeroize, zeroize is a dependency of athm. Sounds like you want a separate CL for zeroize then the athm stuff here, or should we split it up further?

      Julia Hansbrough

      That split sounds fine to me!

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Aykut Bulut
      • David Benjamin
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Attention: David Benjamin <davi...@chromium.org>
      Gerrit-Comment-Date: Wed, 24 Jun 2026 18:33:30 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Julia Hansbrough <flowe...@google.com>
      Comment-In-Reply-To: Sam Schlesinger <samschl...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Aykut Bulut (Gerrit)

      unread,
      Jun 25, 2026, 10:40:15 AMJun 25
      to Sam Schlesinger, chrome-third-pa...@google.com, Julia Hansbrough, David Benjamin, chromium...@chromium.org
      Attention needed from David Benjamin and Sam Schlesinger

      Aykut Bulut added 1 comment

      Patchset-level comments
      Aykut Bulut . resolved

      Thanks Sam, PVT changes LGTM. Some of my comments fell through the cracks, but we can fix them as we go (returning unique_ptr, parameterized testing, fuzzing etc).

      I saw comments on splitting the CL which is great. I will re-review the PVT changes once they are separated to a new CL.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • David Benjamin
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Attention: David Benjamin <davi...@chromium.org>
      Gerrit-Comment-Date: Thu, 25 Jun 2026 14:40:07 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Benjamin (Gerrit)

      unread,
      Jun 25, 2026, 3:32:48 PMJun 25
      to Sam Schlesinger, Phillipp Schoppmann, chrome-third-pa...@google.com, Julia Hansbrough, Aykut Bulut, chromium...@chromium.org
      Attention needed from Phillipp Schoppmann and Sam Schlesinger

      David Benjamin added 1 comment

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2 (Latest): # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Phillipp Schoppmann
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-Attention: Phillipp Schoppmann <schop...@google.com>
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Comment-Date: Thu, 25 Jun 2026 19:32:40 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Benjamin (Gerrit)

      unread,
      Jun 25, 2026, 3:33:52 PMJun 25
      to Sam Schlesinger, Phillipp Schoppmann, chrome-third-pa...@google.com, Julia Hansbrough, Aykut Bulut, chromium...@chromium.org
      Attention needed from Phillipp Schoppmann and Sam Schlesinger

      David Benjamin added 1 comment

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2 (Latest): # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      Gerrit-Comment-Date: Thu, 25 Jun 2026 19:33:44 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: David Benjamin <davi...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Sam Schlesinger (Gerrit)

      unread,
      Jun 26, 2026, 9:14:54 AMJun 26
      to Phillipp Schoppmann, chrome-third-pa...@google.com, Julia Hansbrough, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from David Benjamin, Julia Hansbrough and Phillipp Schoppmann

      Sam Schlesinger added 2 comments

      Patchset-level comments
      Julia Hansbrough . unresolved

      It looks like this is adding a new third-party Rust crate. Can the addition of the crate please be done in a separate CL?

      Sam Schlesinger

      Sure, will do. I'm adding two crates, for context: athm and zeroize, zeroize is a dependency of athm. Sounds like you want a separate CL for zeroize then the athm stuff here, or should we split it up further?

      Julia Hansbrough

      That split sounds fine to me!

      Sam Schlesinger

      Thank you, will do that.

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2 (Latest): # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      David Benjamin

      Specifically this code here:
      https://source.chromium.org/chromium/chromium/src/+/main:third_party/anonymous_tokens/src/athm/src/backend/boringssl.rs;drc=5297514b9c3e05684182103f434ee218c97afed9;l=372

      Sam Schlesinger

      Good catch! I'll look into this today, thanks for checking in detail.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • David Benjamin
      • Julia Hansbrough
      • Phillipp Schoppmann
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
      Gerrit-Attention: Phillipp Schoppmann <schop...@google.com>
      Gerrit-Attention: David Benjamin <davi...@chromium.org>
      Gerrit-Comment-Date: Fri, 26 Jun 2026 13:14:42 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Julia Hansbrough <flowe...@google.com>
      Comment-In-Reply-To: Sam Schlesinger <samschl...@google.com>
      Comment-In-Reply-To: David Benjamin <davi...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Benjamin (Gerrit)

      unread,
      Jun 26, 2026, 2:17:56 PMJun 26
      to Sam Schlesinger, Phillipp Schoppmann, chrome-third-pa...@google.com, Julia Hansbrough, Aykut Bulut, chromium...@chromium.org
      Attention needed from Julia Hansbrough, Phillipp Schoppmann and Sam Schlesinger

      David Benjamin added 1 comment

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2 (Latest): # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      David Benjamin

      Specifically this code here:
      https://source.chromium.org/chromium/chromium/src/+/main:third_party/anonymous_tokens/src/athm/src/backend/boringssl.rs;drc=5297514b9c3e05684182103f434ee218c97afed9;l=372

      Sam Schlesinger

      Good catch! I'll look into this today, thanks for checking in detail.

      David Benjamin

      BTW, between this and another feature, I think we'll just expose `EC_SCALAR` in BoringSSL.

      But you'll still have to substantially rework that code because the interface you picked want needs to be aware of Montgomery reduction.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Julia Hansbrough
      • Phillipp Schoppmann
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Attention: Phillipp Schoppmann <schop...@google.com>
      Gerrit-Comment-Date: Fri, 26 Jun 2026 18:17:44 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Sam Schlesinger (Gerrit)

      unread,
      Jun 29, 2026, 3:14:37 PMJun 29
      to Phillipp Schoppmann, chrome-third-pa...@google.com, Julia Hansbrough, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from David Benjamin, Julia Hansbrough and Phillipp Schoppmann

      Sam Schlesinger added 1 comment

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2 (Latest): # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      David Benjamin

      Specifically this code here:
      https://source.chromium.org/chromium/chromium/src/+/main:third_party/anonymous_tokens/src/athm/src/backend/boringssl.rs;drc=5297514b9c3e05684182103f434ee218c97afed9;l=372

      Sam Schlesinger

      Good catch! I'll look into this today, thanks for checking in detail.

      David Benjamin

      BTW, between this and another feature, I think we'll just expose `EC_SCALAR` in BoringSSL.

      But you'll still have to substantially rework that code because the interface you picked want needs to be aware of Montgomery reduction.

      Sam Schlesinger

      After reviewing and remembering my discussions with Phillipp, his argument is that it is fine as scalar multiplication isn't used by the client, so this is fine. I double-checked this today, but I could have missed something so I'll wait to merge this until Phillipp takes a look as well before merging this. I believe we discussed and reviewed this when we merged the boringssl backend though. The boringssl backend should definitely not be used by an issuer for this reason though, so maybe we need to make that even clearer in the chrome codebase in case issuers just pull this code to use.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • David Benjamin
      • Julia Hansbrough
      • Phillipp Schoppmann
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
      Gerrit-Attention: Phillipp Schoppmann <schop...@google.com>
      Gerrit-Attention: David Benjamin <davi...@chromium.org>
      Gerrit-Comment-Date: Mon, 29 Jun 2026 19:14:21 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Benjamin (Gerrit)

      unread,
      Jun 30, 2026, 10:59:15 AMJun 30
      to Sam Schlesinger, Phillipp Schoppmann, chrome-third-pa...@google.com, Julia Hansbrough, Aykut Bulut, chromium...@chromium.org
      Attention needed from Julia Hansbrough, Phillipp Schoppmann and Sam Schlesinger

      David Benjamin added 1 comment

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2 (Latest): # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      David Benjamin

      Specifically this code here:
      https://source.chromium.org/chromium/chromium/src/+/main:third_party/anonymous_tokens/src/athm/src/backend/boringssl.rs;drc=5297514b9c3e05684182103f434ee218c97afed9;l=372

      Sam Schlesinger

      Good catch! I'll look into this today, thanks for checking in detail.

      David Benjamin

      BTW, between this and another feature, I think we'll just expose `EC_SCALAR` in BoringSSL.

      But you'll still have to substantially rework that code because the interface you picked want needs to be aware of Montgomery reduction.

      Sam Schlesinger

      After reviewing and remembering my discussions with Phillipp, his argument is that it is fine as scalar multiplication isn't used by the client, so this is fine. I double-checked this today, but I could have missed something so I'll wait to merge this until Phillipp takes a look as well before merging this. I believe we discussed and reviewed this when we merged the boringssl backend though. The boringssl backend should definitely not be used by an issuer for this reason though, so maybe we need to make that even clearer in the chrome codebase in case issuers just pull this code to use.

      David Benjamin

      If you're not using it, the code shouldn't be in there. That will (rightfully) cause every reviewer to raise their eyebrows at using a non-constant-time modular multiplication function on a secret.

      (What are you using for the server? The `p256` crate? At a glance, it looks like you were able to fit it into that API because they're using Barrett reduction instead of Montgomery reduction. That's a little surprising to me since I think Montgomery reduction is more common. I suppose you could still implement this API using Montgomery reduction, you'd just a too restrictive abstraction that leaves performance on the table whenever you have multiple multiplications to perform.)

      BTW, between this and another feature, I think we'll just expose EC_SCALAR in BoringSSL.

      crbug/529737443

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Julia Hansbrough
      • Phillipp Schoppmann
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Attention: Phillipp Schoppmann <schop...@google.com>
      Gerrit-Comment-Date: Tue, 30 Jun 2026 14:59:04 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Phillipp Schoppmann (Gerrit)

      unread,
      Jul 7, 2026, 5:30:47 PM (12 days ago) Jul 7
      to Sam Schlesinger, Code Review Nudger, chrome-third-pa...@google.com, Julia Hansbrough, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from Julia Hansbrough and Sam Schlesinger

      Phillipp Schoppmann added 1 comment

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2 (Latest): # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      David Benjamin

      Specifically this code here:
      https://source.chromium.org/chromium/chromium/src/+/main:third_party/anonymous_tokens/src/athm/src/backend/boringssl.rs;drc=5297514b9c3e05684182103f434ee218c97afed9;l=372

      Sam Schlesinger

      Good catch! I'll look into this today, thanks for checking in detail.

      David Benjamin

      BTW, between this and another feature, I think we'll just expose `EC_SCALAR` in BoringSSL.

      But you'll still have to substantially rework that code because the interface you picked want needs to be aware of Montgomery reduction.

      Sam Schlesinger

      After reviewing and remembering my discussions with Phillipp, his argument is that it is fine as scalar multiplication isn't used by the client, so this is fine. I double-checked this today, but I could have missed something so I'll wait to merge this until Phillipp takes a look as well before merging this. I believe we discussed and reviewed this when we merged the boringssl backend though. The boringssl backend should definitely not be used by an issuer for this reason though, so maybe we need to make that even clearer in the chrome codebase in case issuers just pull this code to use.

      David Benjamin

      If you're not using it, the code shouldn't be in there. That will (rightfully) cause every reviewer to raise their eyebrows at using a non-constant-time modular multiplication function on a secret.

      (What are you using for the server? The `p256` crate? At a glance, it looks like you were able to fit it into that API because they're using Barrett reduction instead of Montgomery reduction. That's a little surprising to me since I think Montgomery reduction is more common. I suppose you could still implement this API using Montgomery reduction, you'd just a too restrictive abstraction that leaves performance on the table whenever you have multiple multiplications to perform.)

      BTW, between this and another feature, I think we'll just expose EC_SCALAR in BoringSSL.

      crbug/529737443

      Phillipp Schoppmann

      The library currently implements both client and server side of the protocol. However only the client side is used by Chrome. I don't know if there's a way to remove the server side implementation when importing the code, replacing all implementations we don't need by `unimplemented!`? Alternatively we could try to split up the backend traits into server and client side, and only implement the client side using boringssl. WDYT @samschl...@google.com @davi...@chromium.org ?

      And yes, on the server side we use the p256 crate / the rustcrypto backend for all operations.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Julia Hansbrough
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Comment-Date: Tue, 07 Jul 2026 21:30:38 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Julia Hansbrough (Gerrit)

      unread,
      Jul 7, 2026, 6:27:51 PM (12 days ago) Jul 7
      to Sam Schlesinger, Code Review Nudger, Phillipp Schoppmann, chrome-third-pa...@google.com, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from Sam Schlesinger

      Julia Hansbrough added 1 comment

      Patchset-level comments
      Julia Hansbrough . resolved

      removing myself from the attention set since i don't think i have the context for some of these discussions; feel free to add me again if e.g. the CLs have been split and you need someone to review a new third-party crate, etc

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 2
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Comment-Date: Tue, 07 Jul 2026 22:27:41 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Sam Schlesinger (Gerrit)

      unread,
      Jul 10, 2026, 12:14:06 PM (9 days ago) Jul 10
      to Julia Hansbrough, Chromium LUCI CQ, Code Review Nudger, Phillipp Schoppmann, chrome-third-pa...@google.com, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from Julia Hansbrough

      Sam Schlesinger added 1 comment

      Patchset-level comments
      Julia Hansbrough . resolved

      removing myself from the attention set since i don't think i have the context for some of these discussions; feel free to add me again if e.g. the CLs have been split and you need someone to review a new third-party crate, etc

      Sam Schlesinger

      I have indeed split the CL and need someone to review athm and the other CL for zeroize: https://chromium-review.googlesource.com/c/chromium/src/+/8075619.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Julia Hansbrough
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 4
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Julia Hansbrough <flowe...@google.com>
      Gerrit-Reviewer: Sam Schlesinger <samschl...@google.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Julia Hansbrough <flowe...@google.com>
      Gerrit-Comment-Date: Fri, 10 Jul 2026 16:13:53 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Julia Hansbrough <flowe...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Julia Hansbrough (Gerrit)

      unread,
      Jul 13, 2026, 6:05:40 PM (6 days ago) Jul 13
      to Sam Schlesinger, Chromium LUCI CQ, Code Review Nudger, Phillipp Schoppmann, chrome-third-pa...@google.com, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from Sam Schlesinger

      Julia Hansbrough added 1 comment

      Patchset-level comments
      File-level comment, Patchset 5 (Latest):
      Julia Hansbrough . resolved

      (removing myself fomr the review line because as per an offline convo w/ sam i don't think my input is needed; lmk if that's not correct)

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Sam Schlesinger
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 5
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Sam Schlesinger <samschl...@google.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Sam Schlesinger <samschl...@google.com>
      Gerrit-Comment-Date: Mon, 13 Jul 2026 22:05:27 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Sam Schlesinger (Gerrit)

      unread,
      Jul 18, 2026, 9:05:52 PM (11 hours ago) Jul 18
      to Erica Kovac, Chromium LUCI CQ, Code Review Nudger, Phillipp Schoppmann, chrome-third-pa...@google.com, David Benjamin, Aykut Bulut, chromium...@chromium.org
      Attention needed from David Benjamin and Phillipp Schoppmann

      Sam Schlesinger added 2 comments

      Patchset-level comments
      File-level comment, Patchset 2:
      Julia Hansbrough . resolved

      It looks like this is adding a new third-party Rust crate. Can the addition of the crate please be done in a separate CL?

      Sam Schlesinger

      Sure, will do. I'm adding two crates, for context: athm and zeroize, zeroize is a dependency of athm. Sounds like you want a separate CL for zeroize then the athm stuff here, or should we split it up further?

      Julia Hansbrough

      That split sounds fine to me!

      Sam Schlesinger

      Thank you, will do that.

      Sam Schlesinger

      Done

      File third_party/boringssl/BUILD.gn
      Line 102, Patchset 2: # directory. NEEDS BORINGSSL OWNERS SIGN-OFF.
      David Benjamin . unresolved

      Hmm. @schop...@google.com asserted to me that you all only needed scalar add, and thus you had solved your constant-time problems. But I see you all are doing scalar multiply, and not in a constant-time way. (Multiplication requires Montgomery multiplication to be efficient and constant-time, which is a leaky abstraction. I.e. the strategy to use Rust's mul trait is not going to set you up for success here.)

      Can you clarify what's going on and the list of operations you *actually* need?

      David Benjamin

      Specifically this code here:
      https://source.chromium.org/chromium/chromium/src/+/main:third_party/anonymous_tokens/src/athm/src/backend/boringssl.rs;drc=5297514b9c3e05684182103f434ee218c97afed9;l=372

      Sam Schlesinger

      Good catch! I'll look into this today, thanks for checking in detail.

      David Benjamin

      BTW, between this and another feature, I think we'll just expose `EC_SCALAR` in BoringSSL.

      But you'll still have to substantially rework that code because the interface you picked want needs to be aware of Montgomery reduction.

      Sam Schlesinger

      After reviewing and remembering my discussions with Phillipp, his argument is that it is fine as scalar multiplication isn't used by the client, so this is fine. I double-checked this today, but I could have missed something so I'll wait to merge this until Phillipp takes a look as well before merging this. I believe we discussed and reviewed this when we merged the boringssl backend though. The boringssl backend should definitely not be used by an issuer for this reason though, so maybe we need to make that even clearer in the chrome codebase in case issuers just pull this code to use.

      David Benjamin

      If you're not using it, the code shouldn't be in there. That will (rightfully) cause every reviewer to raise their eyebrows at using a non-constant-time modular multiplication function on a secret.

      (What are you using for the server? The `p256` crate? At a glance, it looks like you were able to fit it into that API because they're using Barrett reduction instead of Montgomery reduction. That's a little surprising to me since I think Montgomery reduction is more common. I suppose you could still implement this API using Montgomery reduction, you'd just a too restrictive abstraction that leaves performance on the table whenever you have multiple multiplications to perform.)

      BTW, between this and another feature, I think we'll just expose EC_SCALAR in BoringSSL.

      crbug/529737443

      Phillipp Schoppmann

      The library currently implements both client and server side of the protocol. However only the client side is used by Chrome. I don't know if there's a way to remove the server side implementation when importing the code, replacing all implementations we don't need by `unimplemented!`? Alternatively we could try to split up the backend traits into server and client side, and only implement the client side using boringssl. WDYT @samschl...@google.com @davi...@chromium.org ?

      And yes, on the server side we use the p256 crate / the rustcrypto backend for all operations.

      Sam Schlesinger

      In discussions, we decided we actually had a path to full constant time, so we implemented that and this should be resolved.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • David Benjamin
      • Phillipp Schoppmann
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie1839f2d982fda003decf26bc2ad8d9aefb9c498
      Gerrit-Change-Number: 7926688
      Gerrit-PatchSet: 5
      Gerrit-Owner: Sam Schlesinger <samschl...@google.com>
      Gerrit-Reviewer: Aykut Bulut <ayk...@chromium.org>
      Gerrit-Reviewer: David Benjamin <davi...@chromium.org>
      Gerrit-Reviewer: Sam Schlesinger <samschl...@google.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: Erica Kovac <eko...@google.com>
      Gerrit-CC: Phillipp Schoppmann <schop...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Phillipp Schoppmann <schop...@google.com>
      Gerrit-Attention: David Benjamin <davi...@chromium.org>
      Gerrit-Comment-Date: Sun, 19 Jul 2026 01:05:27 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Julia Hansbrough <flowe...@google.com>
      Comment-In-Reply-To: Sam Schlesinger <samschl...@google.com>
      Comment-In-Reply-To: Phillipp Schoppmann <schop...@google.com>
      Comment-In-Reply-To: David Benjamin <davi...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages