16#ifndef AUTH_PRIVPASS_TOKEN_H
17#define AUTH_PRIVPASS_TOKEN_H
20#include "bsl_params.h"
43 HITLS_AUTH_PRIVPASS_TOKEN_CHALLENGE_REQUEST = 1,
44 HITLS_AUTH_PRIVPASS_TOKEN_CHALLENGE = 2,
45 HITLS_AUTH_PRIVPASS_TOKEN_REQUEST = 3,
46 HITLS_AUTH_PRIVPASS_TOKEN_RESPONSE = 4,
47 HITLS_AUTH_PRIVPASS_TOKEN_INSTANCE = 5,
48} HITLS_AUTH_PrivPassTokenType;
52 HITLS_AUTH_PRIVPASS_PRV_VERIFY_TOKENS = 1,
53 HITLS_AUTH_PRIVPASS_PUB_VERIFY_TOKENS = 2,
54} HITLS_AUTH_PrivPassType;
58 HITLS_AUTH_PRIVPASS_GET_TOKENCHALLENGEREQUEST_INFO = 1,
59 HITLS_AUTH_PRIVPASS_GET_TOKENCHALLENGE_TYPE = 2,
60 HITLS_AUTH_PRIVPASS_GET_TOKENCHALLENGE_ISSUERNAME = 3,
61 HITLS_AUTH_PRIVPASS_GET_TOKENCHALLENGE_REDEMPTION = 4,
62 HITLS_AUTH_PRIVPASS_GET_TOKENCHALLENGE_ORIGININFO = 5,
63 HITLS_AUTH_PRIVPASS_GET_TOKENREQUEST_TYPE = 6,
64 HITLS_AUTH_PRIVPASS_GET_TOKENREQUEST_TRUNCATEDTOKENKEYID = 7,
65 HITLS_AUTH_PRIVPASS_GET_TOKENREQUEST_BLINDEDMSG = 8,
66 HITLS_AUTH_PRIVPASS_GET_TOKENRESPONSE_INFO = 9,
67 HITLS_AUTH_PRIVPASS_GET_TOKEN_TYPE = 10,
68 HITLS_AUTH_PRIVPASS_GET_TOKEN_NONCE = 11,
69 HITLS_AUTH_PRIVPASS_GET_TOKEN_CHALLENGEDIGEST = 12,
70 HITLS_AUTH_PRIVPASS_GET_TOKEN_TOKENKEYID = 13,
71 HITLS_AUTH_PRIVPASS_GET_TOKEN_AUTHENTICATOR = 14,
72 HITLS_AUTH_PRIVPASS_GET_CTX_TOKENKEYID = 15,
73 HITLS_AUTH_PRIVPASS_GET_CTX_TRUNCATEDTOKENKEYID = 16,
74 HITLS_AUTH_PRIVPASS_GET_CTX_NONCE = 17,
75} HITLS_AUTH_PrivPassCmd;
78 HITLS_AUTH_PRIVPASS_CRYPTO_RSA = BSL_CID_RSA,
79 HITLS_AUTH_PRIVPASS_CRYPTO_SHA256 = BSL_CID_SHA256,
80 HITLS_AUTH_PRIVPASS_CRYPTO_SHA384 = BSL_CID_SHA384,
81} HITLS_AUTH_PrivPassCryptAlgId;
84 HITLS_AUTH_PRIVPASS_NEW_PKEY_CTX_CB = 1,
85 HITLS_AUTH_PRIVPASS_FREE_PKEY_CTX_CB = 2,
86 HITLS_AUTH_PRIVPASS_DIGEST_CB = 3,
87 HITLS_AUTH_PRIVPASS_BLIND_CB = 4,
88 HITLS_AUTH_PRIVPASS_UNBLIND_CB = 5,
89 HITLS_AUTH_PRIVPASS_SIGNDATA_CB = 6,
90 HITLS_AUTH_PRIVPASS_VERIFY_CB = 7,
91 HITLS_AUTH_PRIVPASS_DECODE_PUBKEY_CB = 8,
92 HITLS_AUTH_PRIVPASS_DECODE_PRVKEY_CB = 9,
93 HITLS_AUTH_PRIVPASS_CHECK_KEYPAIR_CB = 10,
94 HITLS_AUTH_PRIVPASS_RANDOM_CB = 11,
95} HITLS_AUTH_PrivPassCryptCbType;
108typedef void *(*HITLS_AUTH_PrivPassNewPkeyCtx)(
void *libCtx,
const char *attrName, int32_t algId);
133 uint32_t inputLen, uint8_t *digest, uint32_t *digestLen);
151 uint32_t dataLen, uint8_t *blindedData, uint32_t *blindedDataLen);
168 uint32_t blindedDataLen, uint8_t *data, uint32_t *dataLen);
184 uint8_t *sign, uint32_t *signLen);
201 const uint8_t *sign, uint32_t signLen);
218 uint32_t pubKeyLen,
void **pkeyCtx);
236 uint32_t prvKeyLen,
void **pkeyCtx);
326 uint8_t *buffer, uint32_t *outBuffLen);
int32_t(* HITLS_AUTH_PrivPassCheckKeyPair)(void *pubKeyCtx, void *prvKeyCtx)
Verifies that a public/private key pair matches.
定义 auth_privpass_token.h:248
int32_t(* HITLS_AUTH_PrivPassDecodePrvKey)(void *libCtx, const char *attrName, void *param, uint8_t *prvKey, uint32_t prvKeyLen, void **pkeyCtx)
Decodes a private key and gen a key ctx. The default algorithm callback implementation is supported o...
定义 auth_privpass_token.h:235
int32_t HITLS_AUTH_PrivPassVerifyToken(HITLS_AUTH_PrivPassCtx *ctx, const HITLS_AUTH_PrivPassToken *tokenChallenge, const HITLS_AUTH_PrivPassToken *token)
Verify the validity of a token.
定义 privpass_token.c:476
int32_t HITLS_AUTH_PrivPassGenTokenChallenge(HITLS_AUTH_PrivPassCtx *ctx, const BSL_Param *param, HITLS_AUTH_PrivPassToken **challenge)
Generate a token challenge. The challenge token is generated based on the input param....
定义 privpass_token.c:112
void(* HITLS_AUTH_PrivPassFreePkeyCtx)(void *pkeyCtx)
Frees a previously allocated key context.
定义 auth_privpass_token.h:116
int32_t(* HITLS_AUTH_PrivPassBlind)(void *pkeyCtx, int32_t algId, const uint8_t *data, uint32_t dataLen, uint8_t *blindedData, uint32_t *blindedDataLen)
Blinds data using the key context and hash algorithm for blind signature protocol....
定义 auth_privpass_token.h:150
void HITLS_AUTH_PrivPassFreeCtx(HITLS_AUTH_PrivPassCtx *ctx)
Free a PrivPass context object.
定义 privpass_token_util.c:724
int32_t HITLS_AUTH_PrivPassSetCryptCb(HITLS_AUTH_PrivPassCtx *ctx, int32_t cbType, void *cryptCb)
Set cryptographic callback functions for the context. When setting callbacks, the input callbacks wil...
定义 privpass_token_util.c:740
int32_t(* HITLS_AUTH_PrivPassVerify)(void *pkeyCtx, int32_t algId, const uint8_t *data, uint32_t dataLen, const uint8_t *sign, uint32_t signLen)
Verifies a signature using the public key context.
定义 auth_privpass_token.h:200
int32_t(* HITLS_AUTH_PrivPassDecodePubKey)(void *libCtx, const char *attrName, uint8_t *pubKey, uint32_t pubKeyLen, void **pkeyCtx)
Decodes a public key and gen a key ctx. The default algorithm callback implementation is supported on...
定义 auth_privpass_token.h:217
HITLS_AUTH_PrivPassCtx * HITLS_AUTH_PrivPassNewCtx(int32_t protocolType)
Create a new PrivPass context object, all library callbacks by default are setted when created.
定义 privpass_token_util.c:709
int32_t HITLS_AUTH_PrivPassSetPubkey(HITLS_AUTH_PrivPassCtx *ctx, uint8_t *pki, uint32_t pkiLen)
Set the public key for the ctx. We support the repeated setting of the public key....
定义 privpass_token.c:518
int32_t HITLS_AUTH_PrivPassGenTokenResponse(HITLS_AUTH_PrivPassCtx *ctx, const HITLS_AUTH_PrivPassToken *tokenRequest, HITLS_AUTH_PrivPassToken **tokenResponse)
Generate a token response.
定义 privpass_token.c:309
int32_t HITLS_AUTH_PrivPassCtxCtrl(HITLS_AUTH_PrivPassCtx *ctx, int32_t cmd, void *param, uint32_t paramLen)
Control interface for getting/setting various parameters in Priv-Pass Ctx.
定义 privpass_token_util.c:1095
int32_t(* HITLS_AUTH_PrivPassRandom)(uint8_t *buffer, uint32_t bufferLen)
Generates random bytes.
定义 auth_privpass_token.h:260
int32_t(* HITLS_AUTH_PrivPassDigest)(void *libCtx, const char *attrName, int32_t algId, const uint8_t *input, uint32_t inputLen, uint8_t *digest, uint32_t *digestLen)
Computes a cryptographic digest of the input data.
定义 auth_privpass_token.h:132
int32_t HITLS_AUTH_PrivPassSetPrvkey(HITLS_AUTH_PrivPassCtx *ctx, void *param, uint8_t *ski, uint32_t skiLen)
Set the private key for the ctx. We support the repeated setting of the private key....
定义 privpass_token.c:563
int32_t HITLS_AUTH_PrivPassDeserialization(HITLS_AUTH_PrivPassCtx *ctx, int32_t tokenType, const uint8_t *buffer, uint32_t buffLen, HITLS_AUTH_PrivPassToken **object)
Deserialize binary data into a PrivPass token object. The object needs to be freed by the caller usin...
定义 privpass_token_util.c:510
int32_t(* HITLS_AUTH_PrivPassUnblind)(void *pkeyCtx, const uint8_t *blindedData, uint32_t blindedDataLen, uint8_t *data, uint32_t *dataLen)
Unblinds previously blinded data to reveal the actual signature. The default algorithm callback imple...
定义 auth_privpass_token.h:167
int32_t HITLS_AUTH_PrivPassGenTokenReq(HITLS_AUTH_PrivPassCtx *ctx, const HITLS_AUTH_PrivPassToken *tokenChallenge, HITLS_AUTH_PrivPassToken **tokenRequest)
Generate a token request.
定义 privpass_token.c:215
int32_t HITLS_AUTH_PrivPassTokenCtrl(HITLS_AUTH_PrivPassToken *object, int32_t cmd, void *param, uint32_t paramLen)
Control interface for getting/setting various parameters in token object.
定义 privpass_token_util.c:1013
int32_t HITLS_AUTH_PrivPassGenToken(HITLS_AUTH_PrivPassCtx *ctx, const HITLS_AUTH_PrivPassToken *tokenChallenge, const HITLS_AUTH_PrivPassToken *tokenResponse, HITLS_AUTH_PrivPassToken **token)
Generate final token.
定义 privpass_token.c:379
struct PrivPass_Token HITLS_AUTH_PrivPassToken
定义 auth_privpass_token.h:39
int32_t HITLS_AUTH_PrivPassSerialization(HITLS_AUTH_PrivPassCtx *ctx, const HITLS_AUTH_PrivPassToken *object, uint8_t *buffer, uint32_t *outBuffLen)
Serialize a PrivPass token object to binary format, If the object == NULL, outbufferlen returns the l...
定义 privpass_token_util.c:556
int32_t(* HITLS_AUTH_PrivPassSignData)(void *pkeyCtx, const uint8_t *data, uint32_t dataLen, uint8_t *sign, uint32_t *signLen)
Signs data using the private key context.
定义 auth_privpass_token.h:183
struct PrivPass_Ctx HITLS_AUTH_PrivPassCtx
定义 auth_privpass_token.h:32
HITLS_AUTH_PrivPassToken * HITLS_AUTH_PrivPassNewToken(int32_t tokenType)
Create a new PrivPass token object.
定义 privpass_token_util.c:581
void HITLS_AUTH_PrivPassFreeToken(HITLS_AUTH_PrivPassToken *object)
Free a PrivPass token object.
定义 privpass_token_util.c:682