1# security子系统ChangeLog 2 3## cl.security.1 Random的setSeed功能变更,由异步接口改为同步接口 4 5**变更影响** 6 7影响已发布的JS接口,接口行为发生变更。 8应用需要进行适配,才可以在新版本SDK环境正常编译通过。 9 10**关键的接口/组件变更** 11修改前的接口原型: 12setSeed(seed : DataBlob, callback : AsyncCallback\<void>) : void; 13setSeed(seed : DataBlob) : Promise\<void>; 14修改后的接口原型: 15setSeed(seed : DataBlob) : void; 16 17**适配指导** 18查看API参考中setSeed对应的接口适配指南: 19[加解密算法库框架-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md) 20 21 22## cl.security.2 interface DataArray 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 23**变更影响** 24 25影响已发布的JS接口,接口行为发生变更。 26应用需要进行适配,才可以在新版本SDK环境正常编译通过。 27 28**关键的接口/组件变更** 29interface DataArray从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 30 31**适配指导** 32重新import并使用对应的.d.ts文件: 33import cryptoCert from '@ohos.security.cert'; 34查看API参考中对应的接口适配指南: 35[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 36 37 38## cl.security.3 interface EncodingFormat从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 39**变更影响** 40 41影响已发布的JS接口,接口行为发生变更。 42应用需要进行适配,才可以在新版本SDK环境正常编译通过。 43 44**关键的接口/组件变更** 45interface EncodingFormat从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 46 47**适配指导** 48重新import并使用对应的.d.ts文件: 49import cryptoCert from '@ohos.security.cert'; 50查看API参考中对应的接口适配指南: 51[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 52 53 54## cl.security.4 interface EncodingBlob 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 55**变更影响** 56 57影响已发布的JS接口,接口行为发生变更。 58应用需要进行适配,才可以在新版本SDK环境正常编译通过。 59 60**关键的接口/组件变更** 61interface EncodingBlob 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 62 63**适配指导** 64重新import并使用对应的.d.ts文件: 65import cryptoCert from '@ohos.security.cert'; 66查看API参考中对应的接口适配指南: 67[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 68 69 70## cl.security.5 interface CertChainData从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 71**变更影响** 72 73影响已发布的JS接口,接口行为发生变更。 74应用需要进行适配,才可以在新版本SDK环境正常编译通过。 75 76**关键的接口/组件变更** 77interface CertChainData从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 78 79**适配指导** 80重新import并使用对应的.d.ts文件: 81import cryptoCert from '@ohos.security.cert'; 82查看API参考中对应的接口适配指南: 83[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 84 85 86## cl.security.6 interface X509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 87**变更影响** 88 89影响已发布的JS接口,接口行为发生变更。 90应用需要进行适配,才可以在新版本SDK环境正常编译通过。 91 92**关键的接口/组件变更** 93interface X509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 94 95**适配指导** 96重新import并使用对应的.d.ts文件: 97import cryptoCert from '@ohos.security.cert'; 98查看API参考中对应的接口适配指南: 99[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 100 101 102## cl.security.7 function createX509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 103**变更影响** 104 105影响已发布的JS接口,接口行为发生变更。 106应用需要进行适配,才可以在新版本SDK环境正常编译通过。 107 108**关键的接口/组件变更** 109function createX509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 110 111**适配指导** 112重新import并使用对应的.d.ts文件: 113import cryptoCert from '@ohos.security.cert'; 114查看API参考中对应的接口适配指南: 115[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 116 117 118## cl.security.8 interface X509CrlEntry从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 119**变更影响** 120 121影响已发布的JS接口,接口行为发生变更。 122应用需要进行适配,才可以在新版本SDK环境正常编译通过。 123 124**关键的接口/组件变更** 125interface X509CrlEntry从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 126 127**适配指导** 128重新import并使用对应的.d.ts文件: 129import cryptoCert from '@ohos.security.cert'; 130查看API参考中对应的接口适配指南: 131[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 132 133 134## cl.security.9 interface X509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 135**变更影响** 136 137影响已发布的JS接口,接口行为发生变更。 138应用需要进行适配,才可以在新版本SDK环境正常编译通过。 139 140**关键的接口/组件变更** 141interface X509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 142 143**适配指导** 144重新import并使用对应的.d.ts文件: 145import cryptoCert from '@ohos.security.cert'; 146查看API参考中对应的接口适配指南: 147[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 148 149 150## cl.security.10 function createX509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 151**变更影响** 152 153影响已发布的JS接口,接口行为发生变更。 154应用需要进行适配,才可以在新版本SDK环境正常编译通过。 155 156**关键的接口/组件变更** 157function createX509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 158 159**适配指导** 160重新import并使用对应的.d.ts文件: 161import cryptoCert from '@ohos.security.cert'; 162查看API参考中对应的接口适配指南: 163[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 164 165 166## cl.security.11 interface CertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 167**变更影响** 168 169影响已发布的JS接口,接口行为发生变更。 170应用需要进行适配,才可以在新版本SDK环境正常编译通过。 171 172**关键的接口/组件变更** 173interface CertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 174 175**适配指导** 176重新import并使用对应的.d.ts文件: 177import cryptoCert from '@ohos.security.cert'; 178查看API参考中对应的接口适配指南: 179[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 180 181 182## cl.security.12 function createCertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 183**变更影响** 184 185影响已发布的JS接口,接口行为发生变更。 186应用需要进行适配,才可以在新版本SDK环境正常编译通过。 187 188**关键的接口/组件变更** 189function createCertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts 190 191**适配指导** 192重新import并使用对应的.d.ts文件: 193import cryptoCert from '@ohos.security.cert'; 194查看API参考中对应的接口适配指南: 195[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 196 197 198## cl.security.13 X509Cert 的getPublicKey功能变更,由异步接口改为同步接口 199**变更影响** 200 201影响已发布的JS接口,接口行为发生变更。 202应用需要进行适配,才可以在新版本SDK环境正常编译通过。 203 204**关键的接口/组件变更** 205修改前的接口原型: 206getPublicKey(callback : AsyncCallback\<PubKey>) : void; 207getPublicKey() : Promise\<PubKey>; 208修改后的接口原型: 209getPublicKey() : cryptoFramework.PubKey; 210 211**适配指导** 212查看API参考中对应的接口适配指南: 213[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 214 215 216## cl.security.14 X509Cert 的checkValidityWithDate功能变更,由异步接口改为同步接口 217**变更影响** 218 219影响已发布的JS接口,接口行为发生变更。 220应用需要进行适配,才可以在新版本SDK环境正常编译通过。 221 222**关键的接口/组件变更** 223修改前的接口原型: 224checkValidityWithDate(date: string, callback : AsyncCallback\<void>) : void; 225checkValidityWithDate(date: string) : Promise\<void>; 226修改后的接口原型: 227checkValidityWithDate(date: string) : void; 228 229**适配指导** 230查看API参考中对应的接口适配指南: 231[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 232 233 234## cl.security.15 X509CrlEntry 的getCertIssuer功能变更,由异步接口改为同步接口 235**变更影响** 236 237影响已发布的JS接口,接口行为发生变更。 238应用需要进行适配,才可以在新版本SDK环境正常编译通过。 239 240**关键的接口/组件变更** 241修改前的接口原型: 242getCertIssuer(callback : AsyncCallback\<DataBlob>) : void; 243getCertIssuer() : Promise\<DataBlob>; 244 245修改后的接口原型: 246getCertIssuer() : DataBlob; 247 248**适配指导** 249查看API参考中对应的接口适配指南: 250[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 251 252 253## cl.security.16 X509CrlEntry 的getRevocationDate功能变更,由异步接口改为同步接口 254**变更影响** 255 256影响已发布的JS接口,接口行为发生变更。 257应用需要进行适配,才可以在新版本SDK环境正常编译通过。 258 259**关键的接口/组件变更** 260修改前的接口原型: 261getRevocationDate(callback : AsyncCallback\<string>) : void; 262getRevocationDate() : Promise\<string>; 263 264修改后的接口原型: 265getRevocationDate() : string; 266 267**适配指导** 268查看API参考中对应的接口适配指南: 269[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 270 271 272## cl.security.17 X509Crl 的isRevoked功能变更,由异步接口改为同步接口 273**变更影响** 274 275影响已发布的JS接口,接口行为发生变更。 276应用需要进行适配,才可以在新版本SDK环境正常编译通过。 277 278**关键的接口/组件变更** 279修改前的接口原型: 280isRevoked(cert : X509Cert, callback : AsyncCallback\<boolean>) : void; 281isRevoked(cert : X509Cert) : Promise\<boolean>; 282 283修改后的接口原型: 284isRevoked(cert : X509Cert) : boolean; 285 286**适配指导** 287查看API参考中对应的接口适配指南: 288[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 289 290 291## cl.security.18 X509Crl 的getRevokedCert功能变更,由异步接口改为同步接口 292**变更影响** 293 294影响已发布的JS接口,接口行为发生变更。 295应用需要进行适配,才可以在新版本SDK环境正常编译通过。 296 297**关键的接口/组件变更** 298修改前的接口原型: 299getRevokedCert(serialNumber : number, callback : AsyncCallback\<X509CrlEntry>) : void; 300getRevokedCert(serialNumber : number) : Promise\<X509CrlEntry>; 301 302修改后的接口原型: 303getRevokedCert(serialNumber : number) : X509CrlEntry; 304 305**适配指导** 306查看API参考中对应的接口适配指南: 307[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 308 309 310## cl.security.19 X509Crl 的getRevokedCertWithCert功能变更,由异步接口改为同步接口 311**变更影响** 312 313影响已发布的JS接口,接口行为发生变更。 314应用需要进行适配,才可以在新版本SDK环境正常编译通过。 315 316**关键的接口/组件变更** 317修改前的接口原型: 318getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\<X509CrlEntry>) : void; 319getRevokedCertWithCert(cert : X509Cert) : Promise\<X509CrlEntry>; 320 321修改后的接口原型: 322getRevokedCertWithCert(cert : X509Cert) : X509CrlEntry; 323 324**适配指导** 325查看API参考中对应的接口适配指南: 326[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 327 328 329## cl.security.20 X509Crl 的getTbsInfo功能变更,由异步接口改为同步接口 330**变更影响** 331 332影响已发布的JS接口,接口行为发生变更。 333应用需要进行适配,才可以在新版本SDK环境正常编译通过。 334 335**关键的接口/组件变更** 336修改前的接口原型: 337getTbsInfo(callback : AsyncCallback\<DataBlob>) : void; 338getTbsInfo() : Promise\<DataBlob>; 339 340修改后的接口原型: 341getTbsInfo() : DataBlob; 342 343**适配指导** 344查看API参考中对应的接口适配指南: 345[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) 346 347## cl.security.21 HUKS支持No-Hash的签名模式 348 349变更之前,应用传递huks.HuksTag.HUKS_TAG_DIGEST = huks.HuksKeyDigest.HUKS_DIGEST_NONE,HUKS默认使用huks.HuksKeyDigest.HUKS_DIGEST_SHA256进行处理;变更之后,应用传递huks.HuksTag.HUKS_TAG_DIGEST = huks.HuksKeyDigest.HUKS_DIGEST_NONE时,HUKS默认不进行摘要处理,需要业务先对原始数据进行hash操作,再将hash后的摘要传入huks进行签名/验签处理。 350 351**变更影响** 352 353影响已发布的JS接口,接口行为发生变更。 354应用需要进行适配,才可以使得变更前后的签名/验签结果通过。 355 356**关键的接口/组件变更** 357 358发布的JS接口不变, 传入接口的参数集合发生变更。 359 360业务使用No-Hash的签名模式,需要先对原始数据进行hash处理,再将hash后的摘要传入huks签名/验签接口。同时huks.HuksTag.HUKS_TAG_DIGEST参数设置为huks.HuksKeyDigest.HUKS_DIGEST_NONE。 361 362**适配指导** 363 364以签名为例,示例代码如下: 365 366```js 367import huks from '@ohos.security.huks'; 368 369let keyAlias = 'rsa_Key'; 370/* sha256之后的摘要值 */ 371let inDataAfterSha256 = new Uint8Array( 372 0x4B, 0x1E, 0x22, 0x64, 0xA9, 0x89, 0x60, 0x1D, 0xEC, 0x78, 0xC0, 0x5D, 0xBE, 0x46, 0xAD, 0xCF, 373 0x1C, 0x35, 0x16, 0x11, 0x34, 0x01, 0x4E, 0x9B, 0x7C, 0x00, 0x66, 0x0E, 0xCA, 0x09, 0xC0, 0xF3, 374); 375/* 签名参数 */ 376let signProperties = new Array(); 377signProperties[0] = { 378 tag: huks.HuksTag.HUKS_TAG_ALGORITHM, 379 value: huks.HuksKeyAlg.HUKS_ALG_RSA, 380} 381signProperties[1] = { 382 tag: huks.HuksTag.HUKS_TAG_PURPOSE, 383 value: 384 huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN 385} 386signProperties[2] = { 387 tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, 388 value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048, 389} 390signProperties[3] = { 391 tag: huks.HuksTag.HUKS_TAG_DIGEST, 392 value: huks.HuksKeyDigest.HUKS_DIGEST_NONE, // 设置 digest-none 393} 394let signOptions = { 395 properties: signProperties, 396 inData: inDataAfterSha256 // 设置HASH后的值 397} 398 399huks.initSession(keyAlias, signOptions); 400``` 401 402更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)和[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md)。 403 404## cl.security.22 HUKS支持在密钥使用时指定密钥运算参数 405 406变更之前,业务在生成密钥的时候,必须指定密钥运算的全部参数;变更之后,在生成密钥时,只需要包含必选参数即可,在密钥使用阶段再传入其他参数。业务使用会更加灵活。 407 408**变更影响** 409 410影响已发布的JS接口,接口行为发生变更。 411 412允许应用在生成密钥阶段传入的参数中包含必选参数即可,在密钥使用阶段再传入其他可选参数。 413 414**关键的接口/组件变更** 415 416发布的JS接口不变, 传入接口的参数集合发生变更,将参数分为必选参数和可选参数,具体可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md),涉及的接口有: 417 418huks.generateKeyItem 419 420huks.importKeyItem 421 422huks.importWrappedKeyItem 423 424huks.initSession 425 426huks.updateSession 427 428huks.finishSession 429 430**适配指导** 431 432以生成密钥为例,示例代码如下: 433 434```js 435let keyAlias = 'keyAlias'; 436let properties = new Array(); 437//必选参数 438properties[0] = { 439 tag: huks.HuksTag.HUKS_TAG_ALGORITHM, 440 value: huks.HuksKeyAlg.HUKS_ALG_RSA 441}; 442//必选参数 443properties[1] = { 444 tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, 445 value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048 446}; 447//必选参数 448properties[2] = { 449 tag: huks.HuksTag.HUKS_TAG_PURPOSE, 450 value: 451 huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | 452 huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY 453}; 454//可选参数,如果在生成密钥阶段没有传入,则在使用密钥阶段必须传入。 455properties[3] = { 456 tag: huks.HuksTag.HUKS_TAG_DIGEST, 457 value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 458}; 459let options = { 460 properties: properties 461}; 462try { 463 huks.generateKeyItem(keyAlias, options, function (error, data) { 464 if (error) { 465 console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); 466 } else { 467 console.info(`callback: generateKeyItem key success`); 468 } 469 }); 470} catch (error) { 471 console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); 472} 473``` 474 475更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)和[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md)。 476