1/* 2 * Copyright (C) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15import * as param from '../publicParam'; 16 17let HuksAgreeDH = { 18 HuksKeySTORAGE: { 19 tag: param.HksTag.HKS_TAG_KEY_STORAGE_FLAG, 20 value: param.HksKeyStorageType.HKS_STORAGE_PERSISTENT, 21 }, 22 HuksKeyISKEYALIAS: { tag: param.HksTag.HKS_TAG_IS_KEY_ALIAS, value: true }, 23 HuksKeyDIGESTNONE: { 24 tag: param.HksTag.HKS_TAG_DIGEST, 25 value: param.HksKeyDigest.HKS_DIGEST_NONE, 26 }, 27 HuksKeyDIGESTSHA1: { 28 tag: param.HksTag.HKS_TAG_DIGEST, 29 value: param.HksKeyDigest.HKS_DIGEST_SHA1, 30 }, 31 HuksKeyDIGESTSHA224: { 32 tag: param.HksTag.HKS_TAG_DIGEST, 33 value: param.HksKeyDigest.HKS_DIGEST_SHA224, 34 }, 35 HuksKeyDIGESTSHA256: { 36 tag: param.HksTag.HKS_TAG_DIGEST, 37 value: param.HksKeyDigest.HKS_DIGEST_SHA256, 38 }, 39 HuksKeyDIGESTSHA384: { 40 tag: param.HksTag.HKS_TAG_DIGEST, 41 value: param.HksKeyDigest.HKS_DIGEST_SHA384, 42 }, 43 HuksKeyDIGESTSHA512: { 44 tag: param.HksTag.HKS_TAG_DIGEST, 45 value: param.HksKeyDigest.HKS_DIGEST_SHA512, 46 }, 47 HuksKeyPADDINGNONE: { 48 tag: param.HksTag.HKS_TAG_PADDING, 49 value: param.HksKeyPadding.HKS_PADDING_NONE, 50 }, 51 HuksKeyPADDINGPKCS7: { 52 tag: param.HksTag.HKS_TAG_PADDING, 53 value: param.HksKeyPadding.HKS_PADDING_PKCS7, 54 }, 55 HuksKeyBLOCKMODECBC: { 56 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 57 value: param.HksCipherMode.HKS_MODE_CBC, 58 }, 59 HuksKeyBLOCKMODECCM: { 60 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 61 value: param.HksCipherMode.HKS_MODE_CCM, 62 }, 63 HuksKeyBLOCKMODEECB: { 64 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 65 value: param.HksCipherMode.HKS_MODE_ECB, 66 }, 67 HuksKeyBLOCKMODECTR: { 68 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 69 value: param.HksCipherMode.HKS_MODE_CTR, 70 }, 71 HuksKeyBLOCKMODEGCM: { 72 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 73 value: param.HksCipherMode.HKS_MODE_GCM, 74 }, 75 HuksKeyALGORITHMAES: { 76 tag: param.HksTag.HKS_TAG_ALGORITHM, 77 value: param.HksKeyAlg.HKS_ALG_AES, 78 }, 79 HuksKeyALGORITHMHMAC: { 80 tag: param.HksTag.HKS_TAG_ALGORITHM, 81 value: param.HksKeyAlg.HKS_ALG_HMAC, 82 }, 83 HuksKeySIZE256: { 84 tag: param.HksTag.HKS_TAG_KEY_SIZE, 85 value: param.HksKeySize.HKS_DH_KEY_SIZE_256, 86 }, 87 HuksKeySIZE128: { 88 tag: param.HksTag.HKS_TAG_KEY_SIZE, 89 value: param.HksKeySize.HKS_DH_KEY_SIZE_128, 90 }, 91 HuksKeySIZE192: { 92 tag: param.HksTag.HKS_TAG_KEY_SIZE, 93 value: param.HksKeySize.HKS_DH_KEY_SIZE_192, 94 }, 95 HuksKeyAlgDH: { 96 tag: param.HksTag.HKS_TAG_ALGORITHM, 97 value: param.HksKeyAlg.HKS_ALG_DH, 98 }, 99 HuksKeyAlgAES: { 100 tag: param.HksTag.HKS_TAG_ALGORITHM, 101 value: param.HksKeyAlg.HKS_ALG_AES, 102 }, 103 HuksKeyAlgHMAC: { 104 tag: param.HksTag.HKS_TAG_ALGORITHM, 105 value: param.HksKeyAlg.HKS_ALG_HMAC, 106 }, 107 HuksKeyPurposeDERIVE: { 108 tag: param.HksTag.HKS_TAG_PURPOSE, 109 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_DERIVE, 110 }, 111 HuksKeyPurposeMAC: { 112 tag: param.HksTag.HKS_TAG_PURPOSE, 113 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_MAC, 114 }, 115 HuksKeyPurposeENCRYPTDECRYPT: { 116 tag: param.HksTag.HKS_TAG_PURPOSE, 117 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_ENCRYPT | param.HksKeyPurpose.HKS_KEY_PURPOSE_DECRYPT, 118 }, 119 HuksKeyPurposeDH: { 120 tag: param.HksTag.HKS_TAG_PURPOSE, 121 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE, 122 }, 123 HuksKeyDHSize2048: { 124 tag: param.HksTag.HKS_TAG_KEY_SIZE, 125 value: param.HksKeySize.HKS_DH_KEY_SIZE_2048, 126 }, 127 HuksKeyDHSize3072: { 128 tag: param.HksTag.HKS_TAG_KEY_SIZE, 129 value: param.HksKeySize.HKS_DH_KEY_SIZE_3072, 130 }, 131 HuksKeyDHSize4096: { 132 tag: param.HksTag.HKS_TAG_KEY_SIZE, 133 value: param.HksKeySize.HKS_DH_KEY_SIZE_4096, 134 }, 135}; 136 137let HuksAgreeECDH = { 138 HuksKeyAlgECDH: { 139 tag: param.HksTag.HKS_TAG_ALGORITHM, 140 value: param.HksKeyAlg.HKS_ALG_ECDH, 141 }, 142 HuksKeyAlgECC: { 143 tag: param.HksTag.HKS_TAG_ALGORITHM, 144 value: param.HksKeyAlg.HKS_ALG_ECC, 145 }, 146 HuksKeyECCSize224: { 147 tag: param.HksTag.HKS_TAG_KEY_SIZE, 148 value: param.HksKeySize.HKS_ECC_KEY_SIZE_224, 149 }, 150 HuksKeyECCSize256: { 151 tag: param.HksTag.HKS_TAG_KEY_SIZE, 152 value: param.HksKeySize.HKS_ECC_KEY_SIZE_256, 153 }, 154 HuksKeyECCSize384: { 155 tag: param.HksTag.HKS_TAG_KEY_SIZE, 156 value: param.HksKeySize.HKS_ECC_KEY_SIZE_384, 157 }, 158 HuksKeyECCSize521: { 159 tag: param.HksTag.HKS_TAG_KEY_SIZE, 160 value: param.HksKeySize.HKS_ECC_KEY_SIZE_521, 161 }, 162 HuksKeyECCDIGEST: { 163 tag: param.HksTag.HKS_TAG_DIGEST, 164 value: param.HksKeyDigest.HKS_DIGEST_NONE, 165 }, 166 HuksKeyECCPADDING: { 167 tag: param.HksTag.HKS_TAG_PADDING, 168 value: param.HksKeyPadding.HKS_PADDING_NONE, 169 }, 170 HuksKeyECCBLOCKMODE: { 171 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 172 value: param.HksCipherMode.HKS_MODE_CBC, 173 }, 174 HuksKeySTORAGE: { 175 tag: param.HksTag.HKS_TAG_KEY_STORAGE_FLAG, 176 value: param.HksKeyStorageType.HKS_STORAGE_PERSISTENT, 177 }, 178 HuksKeyISKEYALIAS: { tag: param.HksTag.HKS_TAG_IS_KEY_ALIAS, value: true }, 179 HuksKeyDIGESTNONE: { 180 tag: param.HksTag.HKS_TAG_DIGEST, 181 value: param.HksKeyDigest.HKS_DIGEST_NONE, 182 }, 183 HuksKeyDIGESTSHA1: { 184 tag: param.HksTag.HKS_TAG_DIGEST, 185 value: param.HksKeyDigest.HKS_DIGEST_SHA1, 186 }, 187 HuksKeyDIGESTSHA224: { 188 tag: param.HksTag.HKS_TAG_DIGEST, 189 value: param.HksKeyDigest.HKS_DIGEST_SHA224, 190 }, 191 HuksKeyDIGESTSHA256: { 192 tag: param.HksTag.HKS_TAG_DIGEST, 193 value: param.HksKeyDigest.HKS_DIGEST_SHA256, 194 }, 195 HuksKeyDIGESTSHA384: { 196 tag: param.HksTag.HKS_TAG_DIGEST, 197 value: param.HksKeyDigest.HKS_DIGEST_SHA384, 198 }, 199 HuksKeyDIGESTSHA512: { 200 tag: param.HksTag.HKS_TAG_DIGEST, 201 value: param.HksKeyDigest.HKS_DIGEST_SHA512, 202 }, 203 HuksKeyPADDINGNONE: { 204 tag: param.HksTag.HKS_TAG_PADDING, 205 value: param.HksKeyPadding.HKS_PADDING_NONE, 206 }, 207 HuksKeyPADDINGPKCS7: { 208 tag: param.HksTag.HKS_TAG_PADDING, 209 value: param.HksKeyPadding.HKS_PADDING_PKCS7, 210 }, 211 HuksKeyBLOCKMODECBC: { 212 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 213 value: param.HksCipherMode.HKS_MODE_CBC, 214 }, 215 HuksKeyBLOCKMODECCM: { 216 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 217 value: param.HksCipherMode.HKS_MODE_CCM, 218 }, 219 HuksKeyBLOCKMODEECB: { 220 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 221 value: param.HksCipherMode.HKS_MODE_ECB, 222 }, 223 HuksKeyBLOCKMODECTR: { 224 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 225 value: param.HksCipherMode.HKS_MODE_CTR, 226 }, 227 HuksKeyBLOCKMODEGCM: { 228 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 229 value: param.HksCipherMode.HKS_MODE_GCM, 230 }, 231 HuksKeyALGORITHMAES: { 232 tag: param.HksTag.HKS_TAG_ALGORITHM, 233 value: param.HksKeyAlg.HKS_ALG_AES, 234 }, 235 HuksKeyALGORITHMHMAC: { 236 tag: param.HksTag.HKS_TAG_ALGORITHM, 237 value: param.HksKeyAlg.HKS_ALG_HMAC, 238 }, 239 HuksKeySIZE521: { 240 tag: param.HksTag.HKS_TAG_KEY_SIZE, 241 value: param.HksKeySize.HKS_ECC_KEY_SIZE_521, 242 }, 243 HuksKeySIZE256: { 244 tag: param.HksTag.HKS_TAG_KEY_SIZE, 245 value: param.HksKeySize.HKS_ECC_KEY_SIZE_256, 246 }, 247 HuksKeySIZE128: { 248 tag: param.HksTag.HKS_TAG_KEY_SIZE, 249 value: param.HksKeySize.HKS_ECC_KEY_SIZE_128, 250 }, 251 HuksKeySIZE192: { 252 tag: param.HksTag.HKS_TAG_KEY_SIZE, 253 value: param.HksKeySize.HKS_ECC_KEY_SIZE_192, 254 }, 255 HuksKeyAlgAES: { 256 tag: param.HksTag.HKS_TAG_ALGORITHM, 257 value: param.HksKeyAlg.HKS_ALG_AES, 258 }, 259 HuksKeyAlgHMAC: { 260 tag: param.HksTag.HKS_TAG_ALGORITHM, 261 value: param.HksKeyAlg.HKS_ALG_HMAC, 262 }, 263 HuksKeyPurposeECDH: { 264 tag: param.HksTag.HKS_TAG_PURPOSE, 265 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE, 266 }, 267 HuksKeyPurposeDERIVE: { 268 tag: param.HksTag.HKS_TAG_PURPOSE, 269 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_DERIVE, 270 }, 271 HuksKeyPurposeMAC: { 272 tag: param.HksTag.HKS_TAG_PURPOSE, 273 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_MAC, 274 }, 275 HuksKeyPurposeENCRYPTDECRYPT: { 276 tag: param.HksTag.HKS_TAG_PURPOSE, 277 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_ENCRYPT | param.HksKeyPurpose.HKS_KEY_PURPOSE_DECRYPT, 278 }, 279}; 280 281let HuksKeyAlgX25519 = { 282 HuksKeyAlgX25519: { 283 tag: param.HksTag.HKS_TAG_ALGORITHM, 284 value: param.HksKeyAlg.HKS_ALG_X25519, 285 }, 286 HuksKeyPurposeAGREE: { 287 tag: param.HksTag.HKS_TAG_PURPOSE, 288 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE, 289 }, 290 HuksKeyCURVE25519Size256: { 291 tag: param.HksTag.HKS_TAG_KEY_SIZE, 292 value: param.HksKeySize.HKS_CURVE25519_KEY_SIZE_256, 293 }, 294 HuksKeyBLOCKMODE: { 295 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 296 value: param.HksCipherMode.HKS_MODE_CBC, 297 }, 298 HuksKeyPADDING: { 299 tag: param.HksTag.HKS_TAG_PADDING, 300 value: param.HksKeyPadding.HKS_PADDING_NONE, 301 }, 302 HuksKeyDIGEST: { 303 tag: param.HksTag.HKS_TAG_DIGEST, 304 value: param.HksKeyDigest.HKS_DIGEST_NONE, 305 }, 306 HuksKeySTORAGE: { 307 tag: param.HksTag.HKS_TAG_KEY_STORAGE_FLAG, 308 value: param.HksKeyStorageType.HKS_STORAGE_PERSISTENT, 309 }, 310 HuksKeyISKEYALIAS: { tag: param.HksTag.HKS_TAG_IS_KEY_ALIAS, value: true }, 311 HuksKeyDIGESTNONE: { 312 tag: param.HksTag.HKS_TAG_DIGEST, 313 value: param.HksKeyDigest.HKS_DIGEST_NONE, 314 }, 315 HuksKeyDIGESTSHA1: { 316 tag: param.HksTag.HKS_TAG_DIGEST, 317 value: param.HksKeyDigest.HKS_DIGEST_SHA1, 318 }, 319 HuksKeyDIGESTSHA224: { 320 tag: param.HksTag.HKS_TAG_DIGEST, 321 value: param.HksKeyDigest.HKS_DIGEST_SHA224, 322 }, 323 HuksKeyDIGESTSHA256: { 324 tag: param.HksTag.HKS_TAG_DIGEST, 325 value: param.HksKeyDigest.HKS_DIGEST_SHA256, 326 }, 327 HuksKeyDIGESTSHA384: { 328 tag: param.HksTag.HKS_TAG_DIGEST, 329 value: param.HksKeyDigest.HKS_DIGEST_SHA384, 330 }, 331 HuksKeyDIGESTSHA512: { 332 tag: param.HksTag.HKS_TAG_DIGEST, 333 value: param.HksKeyDigest.HKS_DIGEST_SHA512, 334 }, 335 HuksKeyPADDINGNONE: { 336 tag: param.HksTag.HKS_TAG_PADDING, 337 value: param.HksKeyPadding.HKS_PADDING_NONE, 338 }, 339 HuksKeyPADDINGPKCS7: { 340 tag: param.HksTag.HKS_TAG_PADDING, 341 value: param.HksKeyPadding.HKS_PADDING_PKCS7, 342 }, 343 HuksKeyBLOCKMODECBC: { 344 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 345 value: param.HksCipherMode.HKS_MODE_CBC, 346 }, 347 HuksKeyBLOCKMODECCM: { 348 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 349 value: param.HksCipherMode.HKS_MODE_CCM, 350 }, 351 HuksKeyBLOCKMODEECB: { 352 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 353 value: param.HksCipherMode.HKS_MODE_ECB, 354 }, 355 HuksKeyBLOCKMODECTR: { 356 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 357 value: param.HksCipherMode.HKS_MODE_CTR, 358 }, 359 HuksKeyBLOCKMODEGCM: { 360 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 361 value: param.HksCipherMode.HKS_MODE_GCM, 362 }, 363 HuksKeyALGORITHMAES: { 364 tag: param.HksTag.HKS_TAG_ALGORITHM, 365 value: param.HksKeyAlg.HKS_ALG_AES, 366 }, 367 HuksKeyALGORITHMHMAC: { 368 tag: param.HksTag.HKS_TAG_ALGORITHM, 369 value: param.HksKeyAlg.HKS_ALG_HMAC, 370 }, 371 HuksKeySIZE256: { 372 tag: param.HksTag.HKS_TAG_KEY_SIZE, 373 value: param.HksKeySize.HKS_DH_KEY_SIZE_256, 374 }, 375 HuksKeySIZE128: { 376 tag: param.HksTag.HKS_TAG_KEY_SIZE, 377 value: param.HksKeySize.HKS_DH_KEY_SIZE_128, 378 }, 379 HuksKeySIZE192: { 380 tag: param.HksTag.HKS_TAG_KEY_SIZE, 381 value: param.HksKeySize.HKS_DH_KEY_SIZE_192, 382 }, 383 HuksKeyAlgDH: { 384 tag: param.HksTag.HKS_TAG_ALGORITHM, 385 value: param.HksKeyAlg.HKS_ALG_DH, 386 }, 387 HuksKeyAlgAES: { 388 tag: param.HksTag.HKS_TAG_ALGORITHM, 389 value: param.HksKeyAlg.HKS_ALG_AES, 390 }, 391 HuksKeyAlgHMAC: { 392 tag: param.HksTag.HKS_TAG_ALGORITHM, 393 value: param.HksKeyAlg.HKS_ALG_HMAC, 394 }, 395 HuksKeyPurposeDERIVE: { 396 tag: param.HksTag.HKS_TAG_PURPOSE, 397 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_DERIVE, 398 }, 399 HuksKeyPurposeMAC: { 400 tag: param.HksTag.HKS_TAG_PURPOSE, 401 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_MAC, 402 }, 403 HuksKeyPurposeENCRYPTDECRYPT: { 404 tag: param.HksTag.HKS_TAG_PURPOSE, 405 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_ENCRYPT | param.HksKeyPurpose.HKS_KEY_PURPOSE_DECRYPT, 406 }, 407 HuksKeyPurposeX25519: { 408 tag: param.HksTag.HKS_TAG_PURPOSE, 409 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE, 410 }, 411 HuksKeyDHSize2048: { 412 tag: param.HksTag.HKS_TAG_KEY_SIZE, 413 value: param.HksKeySize.HKS_DH_KEY_SIZE_2048, 414 }, 415 HuksKeyDHSize3072: { 416 tag: param.HksTag.HKS_TAG_KEY_SIZE, 417 value: param.HksKeySize.HKS_DH_KEY_SIZE_3072, 418 }, 419 HuksKeyDHSize4096: { 420 tag: param.HksTag.HKS_TAG_KEY_SIZE, 421 value: param.HksKeySize.HKS_DH_KEY_SIZE_4096, 422 }, 423}; 424export { HuksAgreeDH, HuksAgreeECDH, HuksKeyAlgX25519 }; 425