Go to the documentation of this file.
25 #include "../ec_extra/internal.h"
26 #include "../fipsmodule/ec/internal.h"
53 if (
method->group == NULL) {
57 method->hash_to_group = hash_to_group;
170 sk_TRUST_TOKEN_PRETOKEN_new_null();
171 if (pretokens == NULL) {
176 for (
size_t i = 0;
i <
count;
i++) {
180 if (pretoken == NULL ||
181 !sk_TRUST_TOKEN_PRETOKEN_push(pretokens, pretoken)) {
227 static const uint8_t kDLEQLabel[] =
"DLEQ";
257 static const uint8_t kDLEQBatchLabel[] =
"DLEQ BATCH";
258 if (
index > 0xffff) {
270 !
CBB_add_bytes(&cbb, kDLEQBatchLabel,
sizeof(kDLEQBatchLabel)) ||
312 jacobians[idx_T] = *
T;
313 jacobians[idx_W] = *
W;
321 &affines[idx_W], &affines[idx_k0],
349 EC_SCALAR scalars[2] = {*scalar0, *scalar1};
390 jacobians[idx_T] = *
T;
391 jacobians[idx_W] = *
W;
399 &affines[idx_W], &affines[idx_k0],
415 size_t num_requested,
size_t num_to_issue) {
417 if (num_requested < num_to_issue) {
422 if (num_to_issue > ((
size_t)-1) /
sizeof(
EC_RAW_POINT) ||
423 num_to_issue > ((
size_t)-1) /
sizeof(
EC_SCALAR)) {
443 for (
size_t i = 0;
i < num_to_issue;
i++) {
473 for (
size_t i = 0;
i < num_to_issue;
i++) {
498 if (!
CBS_skip(
cbs, point_len * (num_requested - num_to_issue))) {
518 if (
count > sk_TRUST_TOKEN_PRETOKEN_num(pretokens)) {
549 for (
size_t i = 0;
i <
count;
i++) {
551 sk_TRUST_TOKEN_PRETOKEN_value(pretokens,
i);
594 !sk_TRUST_TOKEN_push(
ret, token)) {
604 for (
size_t i = 0;
i <
count;
i++) {
612 NULL, BTs, es,
count) ||
614 NULL, Zs, es,
count)) {
642 const uint8_t *token,
size_t token_len) {
675 const uint8_t kHashTLabel[] =
"TrustToken VOPRF Experiment V2 HashToGroup";
682 const uint8_t kHashCLabel[] =
"TrustToken VOPRF Experiment V2 HashToScalar";
738 size_t num_requested,
size_t num_to_issue,
#define ec_hash_to_curve_p384_xmd_sha512_sswu_draft07
int voprf_exp2_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key, const uint8_t *in, size_t len)
#define ec_scalar_from_montgomery
#define ec_point_mul_scalar_base
#define TRUST_TOKEN_NONCE_SIZE
#define ec_hash_to_scalar_p384_xmd_sha512_draft07
#define ec_scalar_mul_montgomery
uint8_t t[TRUST_TOKEN_NONCE_SIZE]
static int voprf_exp2_hash_to_scalar(const EC_GROUP *group, EC_SCALAR *out, uint8_t *buf, size_t len)
static int dleq_generate(const VOPRF_METHOD *method, CBB *cbb, const TRUST_TOKEN_ISSUER_KEY *priv, const EC_RAW_POINT *T, const EC_RAW_POINT *W)
static int voprf_read(const VOPRF_METHOD *method, const TRUST_TOKEN_ISSUER_KEY *key, uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE], const uint8_t *token, size_t token_len)
#define TRUST_TOKEN_R_INVALID_PROOF
#define OPENSSL_PUT_ERROR(library, reason)
#define ec_point_mul_scalar_public
#define CBB_add_u16_length_prefixed
static int voprf_issuer_key_from_bytes(const VOPRF_METHOD *method, TRUST_TOKEN_ISSUER_KEY *key, const uint8_t *in, size_t len)
static int voprf_client_key_from_bytes(const VOPRF_METHOD *method, TRUST_TOKEN_CLIENT_KEY *key, const uint8_t *in, size_t len)
static STACK_OF(TRUST_TOKEN_PRETOKEN)
#define ec_point_from_uncompressed
int voprf_exp2_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key, const uint8_t *in, size_t len)
OPENSSL_EXPORT pem_password_cb void * u
static int voprf_sign(const VOPRF_METHOD *method, const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs, size_t num_requested, size_t num_to_issue)
#define ec_jacobian_to_affine
static int voprf_generate_key(const VOPRF_METHOD *method, CBB *out_private, CBB *out_public)
#define TRUST_TOKEN_R_INVALID_TOKEN
#define ec_jacobian_to_affine_batch
#define EC_GROUP_new_by_curve_name
#define ec_point_to_bytes
static int dleq_verify(const VOPRF_METHOD *method, CBS *cbs, const TRUST_TOKEN_CLIENT_KEY *pub, const EC_RAW_POINT *T, const EC_RAW_POINT *W)
static const uint8_t kDefaultAdditionalData[32]
#define T(upbtypeconst, upbtype, ctype, default_value)
static VOPRF_METHOD voprf_exp2_method
#define TRUST_TOKEN_PRETOKEN_free
#define ec_affine_to_jacobian
#define ec_scalar_equal_vartime
#define TRUST_TOKEN_R_BAD_VALIDITY_CHECK
#define TRUST_TOKEN_R_DECODE_FAILURE
int voprf_exp2_read(const TRUST_TOKEN_ISSUER_KEY *key, uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE], uint8_t *out_private_metadata, const uint8_t *token, size_t token_len)
#define ec_scalar_to_montgomery
const CBS size_t uint32_t key_id
static CRYPTO_once_t voprf_exp2_method_once
hash_to_group_func_t hash_to_group
#define ERR_R_INTERNAL_ERROR
int voprf_exp2_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs, size_t num_requested, size_t num_to_issue, uint8_t private_metadata)
static int voprf_exp2_init_method(void)
#define ec_random_nonzero_scalar
#define ec_scalar_to_bytes
#define ec_point_mul_scalar
#define ec_scalar_inv0_montgomery
static int cbb_add_point(CBB *out, const EC_GROUP *group, const EC_AFFINE *point)
static int hash_to_scalar(const EC_GROUP *group, const EVP_MD *md, EC_SCALAR *out, const uint8_t *dst, size_t dst_len, unsigned k, const uint8_t *msg, size_t msg_len)
hash_to_scalar_func_t hash_to_scalar
#define ec_scalar_from_bytes
static int scalar_from_cbs(CBS *cbs, const EC_GROUP *group, EC_SCALAR *out)
int(* hash_to_scalar_func_t)(const EC_GROUP *group, EC_SCALAR *out, uint8_t *buf, size_t len)
@ POINT_CONVERSION_UNCOMPRESSED
static void voprf_exp2_init_method_impl(void)
static int hash_to_scalar_batch(const VOPRF_METHOD *method, EC_SCALAR *out, const CBB *points, size_t index)
UniquePtr< SSL_SESSION > ret
#define CBS_get_u16_length_prefixed
#define TRUST_TOKEN_R_KEYGEN_FAILURE
#define ec_point_mul_scalar_public_batch
static int cbs_get_point(CBS *cbs, const EC_GROUP *group, EC_AFFINE *out)
#define TRUST_TOKEN_R_BUFFER_TOO_SMALL
static int voprf_exp2_hash_to_group(const EC_GROUP *group, EC_RAW_POINT *out, const uint8_t t[TRUST_TOKEN_NONCE_SIZE])
int(* hash_to_group_func_t)(const EC_GROUP *group, EC_RAW_POINT *out, const uint8_t t[TRUST_TOKEN_NONCE_SIZE])
int voprf_exp2_generate_key(CBB *out_private, CBB *out_public)
static int hash_to_scalar_dleq(const VOPRF_METHOD *method, EC_SCALAR *out, const EC_AFFINE *X, const EC_AFFINE *T, const EC_AFFINE *W, const EC_AFFINE *K0, const EC_AFFINE *K1)
static int mul_public_2(const EC_GROUP *group, EC_RAW_POINT *out, const EC_RAW_POINT *p0, const EC_SCALAR *scalar0, const EC_RAW_POINT *p1, const EC_SCALAR *scalar1)
#define voprf_exp2_unblind
static int voprf_init_method(VOPRF_METHOD *method, int curve_nid, hash_to_group_func_t hash_to_group, hash_to_scalar_func_t hash_to_scalar)
std::function< Poll< absl::StatusOr< T > >()> P
static int scalar_to_cbb(CBB *out, const EC_GROUP *group, const EC_SCALAR *scalar)
#define ec_affine_jacobian_equal
#define ERR_R_MALLOC_FAILURE
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:52