117fd14ceSopenharmony_ci/* 217fd14ceSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 317fd14ceSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 417fd14ceSopenharmony_ci * you may not use this file except in compliance with the License. 517fd14ceSopenharmony_ci * You may obtain a copy of the License at 617fd14ceSopenharmony_ci * 717fd14ceSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 817fd14ceSopenharmony_ci * 917fd14ceSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1017fd14ceSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1117fd14ceSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1217fd14ceSopenharmony_ci * See the License for the specific language governing permissions and 1317fd14ceSopenharmony_ci * limitations under the License. 1417fd14ceSopenharmony_ci */ 1517fd14ceSopenharmony_ci 1617fd14ceSopenharmony_ci#ifndef AUTH_IDENTITY_DEFINE_H 1717fd14ceSopenharmony_ci#define AUTH_IDENTITY_DEFINE_H 1817fd14ceSopenharmony_ci 1917fd14ceSopenharmony_ci#include "alg_defs.h" 2017fd14ceSopenharmony_ci#include "hc_vector.h" 2117fd14ceSopenharmony_ci#include "string_util.h" 2217fd14ceSopenharmony_ci 2317fd14ceSopenharmony_ci#define PRESHARED_URL_CREDENTIAL_TYPE "credentialType" 2417fd14ceSopenharmony_ci#define PRESHARED_URL_KEY_TYPE "keyType" 2517fd14ceSopenharmony_ci#define PRESHARED_URL_TRUST_TYPE "trustType" 2617fd14ceSopenharmony_ci 2717fd14ceSopenharmony_ci#define SHARED_KEY_ALIAS "sharedKeyAlias" 2817fd14ceSopenharmony_ci#define KEY_INFO_PERSISTENT_TOKEN "persistent_token" 2917fd14ceSopenharmony_ci#define TMP_AUTH_KEY_FACTOR "hichain_tmp_auth_enc_key" 3017fd14ceSopenharmony_ci 3117fd14ceSopenharmony_ci#define ASCII_CASE_DIFFERENCE_VALUE 32 3217fd14ceSopenharmony_ci#define P256_SHARED_SECRET_KEY_SIZE 32 3317fd14ceSopenharmony_ci#define AUTH_TOKEN_SIZE 32 3417fd14ceSopenharmony_ci#define PAKE_KEY_ALIAS_LEN 64 3517fd14ceSopenharmony_ci#define PAKE_NONCE_LEN 32 3617fd14ceSopenharmony_ci#define PAKE_PSK_LEN 32 3717fd14ceSopenharmony_ci#define ISO_PSK_LEN 32 3817fd14ceSopenharmony_ci#define SEED_LEN 32 3917fd14ceSopenharmony_ci#define ISO_KEY_ALIAS_LEN 32 4017fd14ceSopenharmony_ci#define ISO_UPGRADE_KEY_ALIAS_LEN 64 4117fd14ceSopenharmony_ci#define KEY_TYPE_PAIR_LEN 2 4217fd14ceSopenharmony_ci#define PAKE_ED25519_KEY_PAIR_LEN 32 4317fd14ceSopenharmony_ci#define PAKE_ED25519_KEY_STR_LEN 64 4417fd14ceSopenharmony_ci#define AUTH_CODE_LEN 32 4517fd14ceSopenharmony_ci#define KEY_ALIAS_LEN 32 4617fd14ceSopenharmony_ci#define PACKAGE_NAME_MAX_LEN 256 4717fd14ceSopenharmony_ci#define SERVICE_TYPE_MAX_LEN 256 4817fd14ceSopenharmony_ci#define AUTH_ID_MAX_LEN 64 4917fd14ceSopenharmony_ci#define USER_ID_LEN 65 5017fd14ceSopenharmony_ci 5117fd14ceSopenharmony_ci#ifdef __cplusplus 5217fd14ceSopenharmony_ciextern "C" { 5317fd14ceSopenharmony_ci#endif 5417fd14ceSopenharmony_ci 5517fd14ceSopenharmony_citypedef enum { KEY_TYPE_SYM, KEY_TYPE_ASYM } KeyType; 5617fd14ceSopenharmony_ci 5717fd14ceSopenharmony_citypedef enum { TRUST_TYPE_PIN, TRUST_TYPE_P2P, TRUST_TYPE_UID } TrustType; 5817fd14ceSopenharmony_ci 5917fd14ceSopenharmony_citypedef enum { PRE_SHARED, CERTIFICATED } IdentityProofType; 6017fd14ceSopenharmony_ci 6117fd14ceSopenharmony_citypedef enum { ALG_EC_SPEKE = 0x0001, ALG_DL_SPEKE = 0x0002, ALG_ISO = 0x0004 } ProtocolAlgType; 6217fd14ceSopenharmony_ci 6317fd14ceSopenharmony_citypedef enum { 6417fd14ceSopenharmony_ci KEY_ALIAS_ACCESSOR_PK = 0, 6517fd14ceSopenharmony_ci KEY_ALIAS_CONTROLLER_PK = 1, 6617fd14ceSopenharmony_ci KEY_ALIAS_LT_KEY_PAIR = 2, 6717fd14ceSopenharmony_ci KEY_ALIAS_KEK = 3, 6817fd14ceSopenharmony_ci KEY_ALIAS_DEK = 4, 6917fd14ceSopenharmony_ci KEY_ALIAS_TMP = 5, 7017fd14ceSopenharmony_ci KEY_ALIAS_PSK = 6, 7117fd14ceSopenharmony_ci KEY_ALIAS_AUTH_TOKEN = 7, 7217fd14ceSopenharmony_ci KEY_ALIAS_P2P_AUTH = 8, 7317fd14ceSopenharmony_ci 7417fd14ceSopenharmony_ci KEY_ALIAS_TYPE_END 7517fd14ceSopenharmony_ci} KeyAliasType; // 0 ~ 2^8-1, don't change the order 7617fd14ceSopenharmony_ci 7717fd14ceSopenharmony_citypedef enum { 7817fd14ceSopenharmony_ci CMD_EXCHANGE_PK = 0x0001, 7917fd14ceSopenharmony_ci CMD_IMPORT_AUTH_CODE = 0x0002, 8017fd14ceSopenharmony_ci CMD_ADD_TRUST_DEVICE = 0x0004, 8117fd14ceSopenharmony_ci CMD_MK_AGREE = 0x0008, 8217fd14ceSopenharmony_ci} ExpandProcessCmd; 8317fd14ceSopenharmony_ci 8417fd14ceSopenharmony_citypedef enum { 8517fd14ceSopenharmony_ci DEFAULT_ID_TYPE = 0, 8617fd14ceSopenharmony_ci P2P_DIRECT_AUTH = 1, 8717fd14ceSopenharmony_ci} IdentityInfoType; 8817fd14ceSopenharmony_ci 8917fd14ceSopenharmony_citypedef struct { 9017fd14ceSopenharmony_ci ProtocolAlgType protocolType; 9117fd14ceSopenharmony_ci uint32_t expandProcessCmds; 9217fd14ceSopenharmony_ci} ProtocolEntity; 9317fd14ceSopenharmony_ciDECLARE_HC_VECTOR(ProtocolEntityVec, ProtocolEntity *) 9417fd14ceSopenharmony_ci 9517fd14ceSopenharmony_citypedef struct { 9617fd14ceSopenharmony_ci Uint8Buff pkInfoStr; 9717fd14ceSopenharmony_ci Uint8Buff pkInfoSignature; 9817fd14ceSopenharmony_ci Algorithm signAlg; 9917fd14ceSopenharmony_ci bool isPseudonym; 10017fd14ceSopenharmony_ci} CertInfo; 10117fd14ceSopenharmony_ci 10217fd14ceSopenharmony_citypedef struct { 10317fd14ceSopenharmony_ci Uint8Buff preSharedUrl; 10417fd14ceSopenharmony_ci CertInfo certInfo; 10517fd14ceSopenharmony_ci} IdentityProof; 10617fd14ceSopenharmony_ci 10717fd14ceSopenharmony_citypedef struct { 10817fd14ceSopenharmony_ci IdentityProofType proofType; 10917fd14ceSopenharmony_ci IdentityProof proof; 11017fd14ceSopenharmony_ci ProtocolEntityVec protocolVec; 11117fd14ceSopenharmony_ci int32_t IdInfoType; 11217fd14ceSopenharmony_ci} IdentityInfo; 11317fd14ceSopenharmony_ciDECLARE_HC_VECTOR(IdentityInfoVec, IdentityInfo *) 11417fd14ceSopenharmony_ci 11517fd14ceSopenharmony_ci#ifdef __cplusplus 11617fd14ceSopenharmony_ci} 11717fd14ceSopenharmony_ci#endif 11817fd14ceSopenharmony_ci 11917fd14ceSopenharmony_ci#endif