11b8d9b87Sopenharmony_ci/* 21b8d9b87Sopenharmony_ci * Copyright (C) 2022-2024 Huawei Device Co., Ltd. 31b8d9b87Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41b8d9b87Sopenharmony_ci * you may not use this file except in compliance with the License. 51b8d9b87Sopenharmony_ci * You may obtain a copy of the License at 61b8d9b87Sopenharmony_ci * 71b8d9b87Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81b8d9b87Sopenharmony_ci * 91b8d9b87Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101b8d9b87Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111b8d9b87Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121b8d9b87Sopenharmony_ci * See the License for the specific language governing permissions and 131b8d9b87Sopenharmony_ci * limitations under the License. 141b8d9b87Sopenharmony_ci */ 151b8d9b87Sopenharmony_ci 161b8d9b87Sopenharmony_ci#ifndef HCF_KEY_H 171b8d9b87Sopenharmony_ci#define HCF_KEY_H 181b8d9b87Sopenharmony_ci 191b8d9b87Sopenharmony_ci#include "blob.h" 201b8d9b87Sopenharmony_ci#include "result.h" 211b8d9b87Sopenharmony_ci#include "object_base.h" 221b8d9b87Sopenharmony_ci 231b8d9b87Sopenharmony_citypedef enum { 241b8d9b87Sopenharmony_ci DSA_P_BN = 101, 251b8d9b87Sopenharmony_ci DSA_Q_BN = 102, 261b8d9b87Sopenharmony_ci DSA_G_BN = 103, 271b8d9b87Sopenharmony_ci DSA_SK_BN = 104, 281b8d9b87Sopenharmony_ci DSA_PK_BN = 105, 291b8d9b87Sopenharmony_ci 301b8d9b87Sopenharmony_ci ECC_FP_P_BN = 201, 311b8d9b87Sopenharmony_ci ECC_A_BN = 202, 321b8d9b87Sopenharmony_ci ECC_B_BN = 203, 331b8d9b87Sopenharmony_ci ECC_G_X_BN = 204, 341b8d9b87Sopenharmony_ci ECC_G_Y_BN = 205, 351b8d9b87Sopenharmony_ci ECC_N_BN = 206, 361b8d9b87Sopenharmony_ci ECC_H_INT = 207, // warning: ECC_H_NUM in JS 371b8d9b87Sopenharmony_ci ECC_SK_BN = 208, 381b8d9b87Sopenharmony_ci ECC_PK_X_BN = 209, 391b8d9b87Sopenharmony_ci ECC_PK_Y_BN = 210, 401b8d9b87Sopenharmony_ci ECC_FIELD_TYPE_STR = 211, 411b8d9b87Sopenharmony_ci ECC_FIELD_SIZE_INT = 212, // warning: ECC_FIELD_SIZE_NUM in JS 421b8d9b87Sopenharmony_ci ECC_CURVE_NAME_STR = 213, 431b8d9b87Sopenharmony_ci 441b8d9b87Sopenharmony_ci RSA_N_BN = 301, 451b8d9b87Sopenharmony_ci RSA_SK_BN = 302, 461b8d9b87Sopenharmony_ci RSA_PK_BN = 303, 471b8d9b87Sopenharmony_ci 481b8d9b87Sopenharmony_ci DH_P_BN = 401, 491b8d9b87Sopenharmony_ci DH_G_BN = 402, 501b8d9b87Sopenharmony_ci DH_L_NUM = 403, 511b8d9b87Sopenharmony_ci DH_SK_BN = 404, 521b8d9b87Sopenharmony_ci DH_PK_BN = 405, 531b8d9b87Sopenharmony_ci 541b8d9b87Sopenharmony_ci ED25519_SK_BN = 501, 551b8d9b87Sopenharmony_ci ED25519_PK_BN = 502, 561b8d9b87Sopenharmony_ci X25519_SK_BN = 601, 571b8d9b87Sopenharmony_ci X25519_PK_BN = 602, 581b8d9b87Sopenharmony_ci} AsyKeySpecItem; 591b8d9b87Sopenharmony_ci 601b8d9b87Sopenharmony_citypedef struct HcfKey HcfKey; 611b8d9b87Sopenharmony_ci 621b8d9b87Sopenharmony_cistruct HcfKey { 631b8d9b87Sopenharmony_ci HcfObjectBase base; 641b8d9b87Sopenharmony_ci 651b8d9b87Sopenharmony_ci const char *(*getAlgorithm)(HcfKey *self); 661b8d9b87Sopenharmony_ci 671b8d9b87Sopenharmony_ci HcfResult (*getEncoded)(HcfKey *self, HcfBlob *returnBlob); 681b8d9b87Sopenharmony_ci 691b8d9b87Sopenharmony_ci HcfResult (*getEncodedPem)(HcfKey *self, const char *format, char **returnString); 701b8d9b87Sopenharmony_ci 711b8d9b87Sopenharmony_ci const char *(*getFormat)(HcfKey *self); 721b8d9b87Sopenharmony_ci}; 731b8d9b87Sopenharmony_ci 741b8d9b87Sopenharmony_ci#endif 75