33#ifndef PROTOCORE_OIDC_H
34#define PROTOCORE_OIDC_H
43#define PC_OIDC_RSA_BYTES 256
46#define PC_OIDC_HDR_LEN 512
49#define PC_OIDC_ISS_LEN 256
58#define PC_SCRATCH_WORK_OIDC (PC_OIDC_HDR_LEN + PC_OIDC_RSA_BYTES + PC_OIDC_MAX_LEN + PC_OIDC_ISS_LEN)
61enum class pc_oidc_result : int32_t
64 PC_OIDC_ERR_FORMAT = -1,
67 PC_OIDC_ERR_SIGNATURE = -4,
70 PC_OIDC_ERR_EXPIRED = -7,
71 PC_OIDC_ERR_NOT_YET = -8,
77 uint8_t n[PC_OIDC_RSA_BYTES];
85 char sub[PC_OIDC_SUB_LEN];
86 char email[PC_OIDC_EMAIL_LEN];
95bool pc_oidc_token_kid(
const char *token,
size_t token_len,
char *kid_out,
size_t kid_cap);
105bool pc_oidc_jwks_find(
const char *jwks_json,
const char *kid, pc_oidc_key *key);
119pc_oidc_result pc_oidc_verify_with_key(
const char *token,
size_t token_len,
const pc_oidc_key *key,
120 const char *expected_iss,
const char *expected_aud, uint32_t now_unix,
121 pc_oidc_claims *claims);
129pc_oidc_result pc_oidc_verify(
const char *token,
size_t token_len,
const char *jwks_json,
const char *expected_iss,
130 const char *expected_aud, uint32_t now_unix, pc_oidc_claims *claims);
User-facing configuration for ProtoCore.