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