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 HuksDeriveHKDF = { 18 HuksKeySIZE: { 19 tag: param.HksTag.HKS_TAG_KEY_SIZE, 20 value: param.HksKeySize.HKS_AES_KEY_SIZE_512, 21 }, 22 HuksKeyAlgHKDF: { 23 tag: param.HksTag.HKS_TAG_ALGORITHM, 24 value: param.HksKeyAlg.HKS_ALG_HKDF, 25 }, 26 HuksKeyAlgAES: { 27 tag: param.HksTag.HKS_TAG_ALGORITHM, 28 value: param.HksKeyAlg.HKS_ALG_AES, 29 }, 30 HuksKeyPurposeHKDF: { 31 tag: param.HksTag.HKS_TAG_PURPOSE, 32 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_DERIVE, 33 }, 34 HuksTagHKDFDigestSHA256: { 35 tag: param.HksTag.HKS_TAG_DIGEST, 36 value: param.HksKeyDigest.HKS_DIGEST_SHA256, 37 }, 38 HuksTagHKDFDigestSHA384: { 39 tag: param.HksTag.HKS_TAG_DIGEST, 40 value: param.HksKeyDigest.HKS_DIGEST_SHA384, 41 }, 42 HuksTagHKDFDigestSHA512: { 43 tag: param.HksTag.HKS_TAG_DIGEST, 44 value: param.HksKeyDigest.HKS_DIGEST_SHA512, 45 }, 46 HuksKeyHKDFSize128: { 47 tag: param.HksTag.HKS_TAG_KEY_SIZE, 48 value: param.HksKeySize.HKS_AES_KEY_SIZE_128, 49 }, 50 HuksKeyHKDFSize192: { 51 tag: param.HksTag.HKS_TAG_KEY_SIZE, 52 value: param.HksKeySize.HKS_AES_KEY_SIZE_192, 53 }, 54 HuksKeyHKDFSize256: { 55 tag: param.HksTag.HKS_TAG_KEY_SIZE, 56 value: param.HksKeySize.HKS_AES_KEY_SIZE_256, 57 }, 58 HuksKeyDERIVEKEYSIZE: { 59 tag: param.HksTag.HKS_TAG_DERIVE_KEY_SIZE, 60 value: param.HksKeySize.DERIVE_KEY_SIZE_32, 61 }, 62 63 HuksKeyISKEYALIAS: { tag: param.HksTag.HKS_TAG_IS_KEY_ALIAS, value: true }, 64 HuksKeySTORAGE: { 65 tag: param.HksTag.HKS_TAG_KEY_STORAGE_FLAG, 66 value: param.HksKeyStorageType.HKS_STORAGE_PERSISTENT, 67 }, 68 HuksKeyALGORITHMAES: { 69 tag: param.HksTag.HKS_TAG_ALGORITHM, 70 value: param.HksKeyAlg.HKS_ALG_AES, 71 }, 72 HuksKeyALGORITHMHMAC: { 73 tag: param.HksTag.HKS_TAG_ALGORITHM, 74 value: param.HksKeyAlg.HKS_ALG_HMAC, 75 }, 76 HuksKeySIZE256: { 77 tag: param.HksTag.HKS_TAG_KEY_SIZE, 78 value: param.HksKeySize.HKS_AES_KEY_SIZE_256, 79 }, 80 HuksKeySIZE128: { 81 tag: param.HksTag.HKS_TAG_KEY_SIZE, 82 value: param.HksKeySize.HKS_AES_KEY_SIZE_128, 83 }, 84 HuksKeySIZE192: { 85 tag: param.HksTag.HKS_TAG_KEY_SIZE, 86 value: param.HksKeySize.HKS_AES_KEY_SIZE_192, 87 }, 88 HuksKeyPurposeDERIVE: { 89 tag: param.HksTag.HKS_TAG_PURPOSE, 90 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_DERIVE, 91 }, 92 HuksKeyPurposeMAC: { 93 tag: param.HksTag.HKS_TAG_PURPOSE, 94 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_MAC, 95 }, 96 HuksKeyPurposeENCRYPTDECRYPT: { 97 tag: param.HksTag.HKS_TAG_PURPOSE, 98 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_ENCRYPT | param.HksKeyPurpose.HKS_KEY_PURPOSE_DECRYPT, 99 }, 100 HuksKeyPADDINGNONE: { 101 tag: param.HksTag.HKS_TAG_PADDING, 102 value: param.HksKeyPadding.HKS_PADDING_NONE, 103 }, 104 HuksKeyPADDINGPKCS7: { 105 tag: param.HksTag.HKS_TAG_PADDING, 106 value: param.HksKeyPadding.HKS_PADDING_PKCS7, 107 }, 108 HuksKeyDIGESTNONE: { 109 tag: param.HksTag.HKS_TAG_DIGEST, 110 value: param.HksKeyDigest.HKS_DIGEST_NONE, 111 }, 112 HuksKeyDIGESTSHA1: { 113 tag: param.HksTag.HKS_TAG_DIGEST, 114 value: param.HksKeyDigest.HKS_DIGEST_SHA1, 115 }, 116 HuksKeyDIGESTSHA224: { 117 tag: param.HksTag.HKS_TAG_DIGEST, 118 value: param.HksKeyDigest.HKS_DIGEST_SHA224, 119 }, 120 HuksKeyDIGESTSHA256: { 121 tag: param.HksTag.HKS_TAG_DIGEST, 122 value: param.HksKeyDigest.HKS_DIGEST_SHA256, 123 }, 124 HuksKeyDIGESTSHA384: { 125 tag: param.HksTag.HKS_TAG_DIGEST, 126 value: param.HksKeyDigest.HKS_DIGEST_SHA384, 127 }, 128 HuksKeyDIGESTSHA512: { 129 tag: param.HksTag.HKS_TAG_DIGEST, 130 value: param.HksKeyDigest.HKS_DIGEST_SHA512, 131 }, 132 HuksKeyBLOCKMODECBC: { 133 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 134 value: param.HksCipherMode.HKS_MODE_CBC, 135 }, 136 HuksKeyBLOCKMODECCM: { 137 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 138 value: param.HksCipherMode.HKS_MODE_CCM, 139 }, 140 HuksKeyBLOCKMODEECB: { 141 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 142 value: param.HksCipherMode.HKS_MODE_ECB, 143 }, 144 HuksKeyBLOCKMODECTR: { 145 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 146 value: param.HksCipherMode.HKS_MODE_CTR, 147 }, 148 HuksKeyBLOCKMODEGCM: { 149 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 150 value: param.HksCipherMode.HKS_MODE_GCM, 151 }, 152}; 153 154let HuksDerivePBKDF2 = { 155 HuksKeySIZE: { 156 tag: param.HksTag.HKS_TAG_KEY_SIZE, 157 value: param.HksKeySize.HKS_AES_KEY_SIZE_512, 158 }, 159 HuksKeyAlgPBKDF2: { 160 tag: param.HksTag.HKS_TAG_ALGORITHM, 161 value: param.HksKeyAlg.HKS_ALG_PBKDF2, 162 }, 163 HuksKeyAlgAES: { 164 tag: param.HksTag.HKS_TAG_ALGORITHM, 165 value: param.HksKeyAlg.HKS_ALG_AES, 166 }, 167 HuksKeyPurposePBKDF2: { 168 tag: param.HksTag.HKS_TAG_PURPOSE, 169 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_DERIVE, 170 }, 171 HuksTagPBKDF2DigestSHA256: { 172 tag: param.HksTag.HKS_TAG_DIGEST, 173 value: param.HksKeyDigest.HKS_DIGEST_SHA256, 174 }, 175 HuksTagPBKDF2DigestSHA384: { 176 tag: param.HksTag.HKS_TAG_DIGEST, 177 value: param.HksKeyDigest.HKS_DIGEST_SHA384, 178 }, 179 HuksTagPBKDF2DigestSHA512: { 180 tag: param.HksTag.HKS_TAG_DIGEST, 181 value: param.HksKeyDigest.HKS_DIGEST_SHA512, 182 }, 183 HuksKeyPBKDF2Size128: { 184 tag: param.HksTag.HKS_TAG_KEY_SIZE, 185 value: param.HksKeySize.HKS_AES_KEY_SIZE_128, 186 }, 187 HuksKeyPBKDF2Size192: { 188 tag: param.HksTag.HKS_TAG_KEY_SIZE, 189 value: param.HksKeySize.HKS_AES_KEY_SIZE_192, 190 }, 191 HuksKeyPBKDF2Size256: { 192 tag: param.HksTag.HKS_TAG_KEY_SIZE, 193 value: param.HksKeySize.HKS_AES_KEY_SIZE_256, 194 }, 195 HuksKeyDERIVEKEYSIZE: { 196 tag: param.HksTag.HKS_TAG_DERIVE_KEY_SIZE, 197 value: param.HksKeySize.DERIVE_KEY_SIZE_32, 198 }, 199 200 HuksKeyISKEYALIAS: { tag: param.HksTag.HKS_TAG_IS_KEY_ALIAS, value: true }, 201 HuksKeySTORAGE: { 202 tag: param.HksTag.HKS_TAG_KEY_STORAGE_FLAG, 203 value: param.HksKeyStorageType.HKS_STORAGE_PERSISTENT, 204 }, 205 HuksKeyALGORITHMAES: { 206 tag: param.HksTag.HKS_TAG_ALGORITHM, 207 value: param.HksKeyAlg.HKS_ALG_AES, 208 }, 209 HuksKeyALGORITHMHMAC: { 210 tag: param.HksTag.HKS_TAG_ALGORITHM, 211 value: param.HksKeyAlg.HKS_ALG_HMAC, 212 }, 213 HuksKeySIZE256: { 214 tag: param.HksTag.HKS_TAG_KEY_SIZE, 215 value: param.HksKeySize.HKS_AES_KEY_SIZE_256, 216 }, 217 HuksKeySIZE128: { 218 tag: param.HksTag.HKS_TAG_KEY_SIZE, 219 value: param.HksKeySize.HKS_AES_KEY_SIZE_128, 220 }, 221 HuksKeySIZE192: { 222 tag: param.HksTag.HKS_TAG_KEY_SIZE, 223 value: param.HksKeySize.HKS_AES_KEY_SIZE_192, 224 }, 225 HuksKeyPurposeDERIVE: { 226 tag: param.HksTag.HKS_TAG_PURPOSE, 227 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_DERIVE, 228 }, 229 HuksKeyPurposeMAC: { 230 tag: param.HksTag.HKS_TAG_PURPOSE, 231 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_MAC, 232 }, 233 HuksKeyPurposeENCRYPTDECRYPT: { 234 tag: param.HksTag.HKS_TAG_PURPOSE, 235 value: param.HksKeyPurpose.HKS_KEY_PURPOSE_ENCRYPT | param.HksKeyPurpose.HKS_KEY_PURPOSE_DECRYPT, 236 }, 237 HuksKeyPADDINGNONE: { 238 tag: param.HksTag.HKS_TAG_PADDING, 239 value: param.HksKeyPadding.HKS_PADDING_NONE, 240 }, 241 HuksKeyPADDINGPKCS7: { 242 tag: param.HksTag.HKS_TAG_PADDING, 243 value: param.HksKeyPadding.HKS_PADDING_PKCS7, 244 }, 245 HuksKeyDIGESTNONE: { 246 tag: param.HksTag.HKS_TAG_DIGEST, 247 value: param.HksKeyDigest.HKS_DIGEST_NONE, 248 }, 249 HuksKeyDIGESTSHA1: { 250 tag: param.HksTag.HKS_TAG_DIGEST, 251 value: param.HksKeyDigest.HKS_DIGEST_SHA1, 252 }, 253 HuksKeyDIGESTSHA224: { 254 tag: param.HksTag.HKS_TAG_DIGEST, 255 value: param.HksKeyDigest.HKS_DIGEST_SHA224, 256 }, 257 HuksKeyDIGESTSHA256: { 258 tag: param.HksTag.HKS_TAG_DIGEST, 259 value: param.HksKeyDigest.HKS_DIGEST_SHA256, 260 }, 261 HuksKeyDIGESTSHA384: { 262 tag: param.HksTag.HKS_TAG_DIGEST, 263 value: param.HksKeyDigest.HKS_DIGEST_SHA384, 264 }, 265 HuksKeyDIGESTSHA512: { 266 tag: param.HksTag.HKS_TAG_DIGEST, 267 value: param.HksKeyDigest.HKS_DIGEST_SHA512, 268 }, 269 HuksKeyBLOCKMODECBC: { 270 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 271 value: param.HksCipherMode.HKS_MODE_CBC, 272 }, 273 HuksKeyBLOCKMODECCM: { 274 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 275 value: param.HksCipherMode.HKS_MODE_CCM, 276 }, 277 HuksKeyBLOCKMODEECB: { 278 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 279 value: param.HksCipherMode.HKS_MODE_ECB, 280 }, 281 HuksKeyBLOCKMODECTR: { 282 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 283 value: param.HksCipherMode.HKS_MODE_CTR, 284 }, 285 HuksKeyBLOCKMODEGCM: { 286 tag: param.HksTag.HKS_TAG_BLOCK_MODE, 287 value: param.HksCipherMode.HKS_MODE_GCM, 288 }, 289}; 290 291export { HuksDeriveHKDF, HuksDerivePBKDF2 }; 292