未验证 提交 9a84bdba 编写于 作者: O openharmony_ci 提交者: Gitee

!15920 添加证书新增接口资料

Merge pull request !15920 from HaixiangW/master
# @ohos.security.cert (证书模块)
crypto framework提供证书相关接口。其中,依赖加解密算法库框架的基础算法能力的部分,详细接口说明可参考[cryptoFramework API参考](js-apis-cryptoFramework.md)
证书算法库框架提供证书相关接口。其中,依赖加解密算法库框架的基础算法能力的部分,详细接口说明可参考[cryptoFramework API参考](js-apis-cryptoFramework.md)
> **说明:**
>
......@@ -59,6 +59,43 @@ buffer数组的列表。
| FORMAT_DER | 0 | DER格式。 |
| FORMAT_PEM | 1 | PEM格式。 |
## CertItemType<sup>10+</sup>
表示获取证书字段的枚举。
**系统能力:** SystemCapability.Security.Cert
| 名称 | 值 | 说明 |
| -------------------------------- | ---- | ------------------------------ |
| CERT_ITEM_TYPE_TBS | 0 | 表示获取证书的待签名信息。 |
| CERT_ITEM_TYPE_PUBLIC_KEY | 1 | 表示获取证书的公钥信息。 |
| CERT_ITEM_TYPE_ISSUER_UNIQUE_ID | 2 | 表示获取证书的颁发者唯一编号。 |
| CERT_ITEM_TYPE_SUBJECT_UNIQUE_ID | 3 | 表示获取证书的主体唯一编号。 |
| CERT_ITEM_TYPE_EXTENSIONS | 4 | 表示获取证书的扩展域信息。 |
## ExtensionOidType<sup>10+</sup>
表示获取扩展域中对象标识符类型的枚举。
**系统能力:** SystemCapability.Security.Cert
| 名称 | 值 | 说明 |
| ----------------------------- | ---- | --------------------------------------------- |
| EXTENSION_OID_TYPE_ALL | 0 | 表示获取扩展域中所有的对象标识符。 |
| EXTENSION_OID_TYPE_CRITICAL | 1 | 表示获取扩展域中critical为true的对象标识符。 |
| EXTENSION_OID_TYPE_UNCRITICAL | 2 | 表示获取扩展域中critical为false的对象标识符。 |
## ExtensionEntryType<sup>10+</sup>
表示获取扩展域中对象类型的枚举。
**系统能力:** SystemCapability.Security.Cert
| 名称 | 值 | 说明 |
| ----------------------------------- | ---- | ---------------------------- |
| EXTENSION_ENTRY_TYPE_ENTRY | 0 | 表示获取整个对象。 |
| EXTENSION_ENTRY_TYPE_ENTRY_CRITICAL | 1 | 表示获取对象的critical属性。 |
| EXTENSION_ENTRY_TYPE_ENTRY_VALUE | 2 | 表示获取对象的数据。 |
## EncodingBlob
......@@ -93,16 +130,16 @@ buffer数组的列表。
createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\<X509Cert>) : void
表示创建X509证书对象。
表示创建X509证书对象,使用Callback回调异步返回结果
**系统能力:** SystemCapability.Security.Cert
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------- | ---- | -------------------------- |
| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 |
| callback | AsyncCallback\<X509Cert> | 是 | 回调函数。表示X509证书对象 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | -------------------------- |
| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 |
| callback | AsyncCallback\<[X509Cert](#x509cert)> | 是 | 回调函数。表示X509证书对象 |
**错误码:**
......@@ -135,7 +172,7 @@ cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) {
createX509Cert(inStream : EncodingBlob) : Promise\<X509Cert>
表示创建X509证书对象。
表示创建X509证书对象,使用Promise方式异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -149,7 +186,7 @@ createX509Cert(inStream : EncodingBlob) : Promise\<X509Cert>
| 类型 | 说明 |
| ------- | ---------------- |
| Promise\<X509Cert> | 表示X509证书对象 |
| Promise\<[X509Cert](#x509cert)> | 表示X509证书对象 |
**错误码:**
......@@ -184,7 +221,7 @@ X509证书类。
verify(key : cryptoFramework.PubKey, callback : AsyncCallback\<void>) : void
表示对证书验签。
表示对证书验签,使用Callback回调异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -235,7 +272,7 @@ cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) {
verify(key : cryptoFramework.PubKey) : Promise\<void>
表示对证书验签。
表示对证书验签,使用Promise方式异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -287,7 +324,7 @@ cryptoCert.createX509Cert(encodingBlob).then(x509Cert => {
getEncoded(callback : AsyncCallback\<EncodingBlob>) : void
表示获取X509证书序列化数据。
表示获取X509证书序列化数据,使用Callback回调异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -337,7 +374,7 @@ cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) {
getEncoded() : Promise\<EncodingBlob>
表示获取X509证书序列化数据。
表示获取X509证书序列化数据,使用Promise方式异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -1115,20 +1152,350 @@ cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) {
});
```
### getItem<sup>10+</sup>
getItem(itemType: CertItemType) : DataBlob
表示获取X509证书对应的字段。
**系统能力:** SystemCapability.Security.Cert
**返回值**
| 类型 | 说明 |
| --------------------- | ----------------------------------------- |
| [DataBlob](#datablob) | 表示X509证书对应的字段,返回值为DER格式。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ----------------------- |
| 19020001 | memory error. |
| 19020002 | runtime error. |
| 19030001 | crypto operation error. |
**示例:**
```js
import cryptoCert from '@ohos.security.cert';
// 证书二进制数据,需业务自行赋值
let encodingData = null;
let encodingBlob = {
data: encodingData,
// 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER
encodingFormat: cryptoCert.EncodingFormat.FORMAT_PEM
};
cryptoCert.createX509Cert(encodingBlob, function (error, x509Cert) {
if (error != null) {
console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message);
} else {
console.log("createX509Cert success");
let tbs = x509Cert.getItem(cryptoCert.CertItemType.CERT_ITEM_TYPE_TBS);
let pubKey = x509Cert.getItem(cryptoCert.CertItemType.CERT_ITEM_TYPE_PUBLIC_KEY);
}
});
```
## cryptoCert.createCertExtension<sup>10+</sup>
createCertExtension(inStream : EncodingBlob, callback : AsyncCallback<CertExtension>) : void
表示创建证书扩展域段的对象,使用Callback回调异步返回结果。
**系统能力:** SystemCapability.Security.Cert
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------- | ---- | -------------------------- |
| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书扩展域段序列化数据 |
| callback | AsyncCallback\<[CertExtension](#certextension10)> | 是 | 回调函数。表示扩展域段对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 19020001 | memory error. |
**示例:**
```js
import cryptoCert from '@ohos.security.cert';
// 证书扩展域段二进制数据,需业务自行赋值
let encodingData = null;
let encodingBlob = {
data: encodingData,
// 根据encodingData的格式进行赋值,仅支持FORMAT_DER
encodingFormat: cryptoCert.EncodingFormat.FORMAT_DER
};
cryptoCert.createCertExtension(encodingBlob, function (error, certExt) {
if (error != null) {
console.log("createCertExtension failed, errCode: " + error.code + ", errMsg: " + error.message);
} else {
console.log("createCertExtension success");
}
});
```
## cryptoCert.createCertExtension<sup>10+</sup>
createCertExtension(inStream : EncodingBlob) : Promise<CertExtension>
表示创建证书扩展域段的对象,使用Promise方式异步返回结果。
**系统能力:** SystemCapability.Security.Cert
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------- | ---- | -------------------------- |
| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书扩展域段序列化数据 |
**返回值**
| 类型 | 说明 |
| ------------------------------------------- | -------------------- |
| Promise\<[CertExtension](#certextension10)> | 表示证书扩展域段对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 19020001 | memory error. |
**示例:**
```js
import cryptoCert from '@ohos.security.cert';
// 证书扩展域段二进制数据,需业务自行赋值
let encodingData = null;
let encodingBlob = {
data: encodingData,
// 根据encodingData的格式进行赋值,仅支持FORMAT_DER
encodingFormat: cryptoCert.EncodingFormat.FORMAT_DER
};
cryptoCert.createCertExtension(encodingBlob).then(certExt => {
console.log("createCertExtension success");
}, error => {
console.log("createCertExtension failed, errCode: " + error.code + ", errMsg: " + error.message);
});
```
## CertExtension<sup>10+</sup>
证书扩展域段类。
### getEncoded<sup>10+</sup>
getEncoded() : EncodingBlob
表示获取证书扩展域段序列化数据。
**系统能力:** SystemCapability.Security.Cert
**返回值**
| 类型 | 说明 |
| ----------------------------- | ---------------------------- |
| [EncodingBlob](#encodingblob) | 表示证书扩展域段序列化数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ----------------------- |
| 19020001 | memory error. |
| 19020002 | runtime error. |
| 19030001 | crypto operation error. |
**示例:**
```js
import cryptoCert from '@ohos.security.cert';
// 证书扩展域段二进制数据,需业务自行赋值
let encodingData = null;
let encodingBlob = {
data: encodingData,
// 根据encodingData的格式进行赋值,仅支持FORMAT_DER
encodingFormat: cryptoCert.EncodingFormat.FORMAT_DER
};
cryptoCert.createCertExtension(encodingBlob, function (error, certExt) {
if (error != null) {
console.log("createCertExtension failed, errCode: " + error.code + ", errMsg: " + error.message);
} else {
console.log("createCertExtension success");
let encodingBlob = certExt.getEncoded()
}
});
```
### getOidList<sup>10+</sup>
getOidList(valueType : ExtensionOidType) : DataArray
表示获取证书扩展域段对象标识符列表。
**系统能力:** SystemCapability.Security.Cert
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------- | ---- | ------------------------------ |
| valueType | [ExtensionOidType](#extensionoidtype) | 是 | 表示证书扩展域段对象标识符类型 |
**返回值**
| 类型 | 说明 |
| ----------------------- | -------------------------------- |
| [DataArray](#dataarray) | 表示证书扩展域段对象标识符列表。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ----------------------- |
| 19020001 | memory error. |
| 19020002 | runtime error. |
| 19030001 | crypto operation error. |
**示例:**
```js
import cryptoCert from '@ohos.security.cert';
// 证书扩展域段二进制数据,需业务自行赋值
let encodingData = null;
let encodingBlob = {
data: encodingData,
// 根据encodingData的格式进行赋值,仅支持FORMAT_DER
encodingFormat: cryptoCert.EncodingFormat.FORMAT_DER
};
cryptoCert.createCertExtension(encodingBlob, function (error, certExt) {
if (error != null) {
console.log("createCertExtension failed, errCode: " + error.code + ", errMsg: " + error.message);
} else {
console.log("createCertExtension success");
let oidList = certExt.getOidList(cryptoCert.ExtensionOidType.EXTENSION_OID_TYPE_ALL)
}
});
```
### getEntry<sup>10+</sup>
getEntry(valueType: ExtensionEntryType, oid : DataBlob) : DataBlob
表示获取证书扩展域段对象信息。
**系统能力:** SystemCapability.Security.Cert
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ----------------------------------------- | ---- | -------------------------------- |
| valueType | [ExtensionEntryType](#extensionentrytype) | 是 | 表示证书扩展域段获取的类型 |
| oid | [DataBlob](#datablob) | 是 | 表示证书扩展域段获取的对象标识符 |
**返回值**
| 类型 | 说明 |
| --------------------- | ---------------------------- |
| [DataBlob](#datablob) | 表示证书扩展域段对象的数据。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ----------------------- |
| 19020001 | memory error. |
| 19020002 | runtime error. |
| 19030001 | crypto operation error. |
**示例:**
```js
import cryptoCert from '@ohos.security.cert';
// 证书扩展域段二进制数据,需业务自行赋值
let encodingData = null;
let encodingBlob = {
data: encodingData,
// 根据encodingData的格式进行赋值,仅支持FORMAT_DER
encodingFormat: cryptoCert.EncodingFormat.FORMAT_DER
};
cryptoCert.createCertExtension(encodingBlob, function (error, certExt) {
if (error != null) {
console.log("createCertExtension failed, errCode: " + error.code + ", errMsg: " + error.message);
} else {
console.log("createCertExtension success");
let oid = new Uint8Array([0x31, 0x2e, 0x32, 0x2e, 0x38, 0x2e, 0x31])
let oidBlob = {
data: oid
}
let entry = certExt.getEntry(cryptoCert.ExtensionEntryType.EXTENSION_ENTRY_TYPE_ENTRY, oidBlob)
}
});
```
### checkCA<sup>10+</sup>
checkCA() : number
表示校验证书是否为CA证书。
**系统能力:** SystemCapability.Security.Cert
**返回值**
| 类型 | 说明 |
| ------ | ------------------------------------------------------------ |
| number | 当证书扩展域段中密钥用途包含签名用途,并且基本约束中cA字段为true时,表示证书为CA证书。如果不是CA,则返回-1;否则返回基本约束中的路径长度。如果证书是CA证书,但是基本约束中未给定路径长度,则返回-2,表示无路径长度限制。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ----------------------- |
| 19020001 | memory error. |
| 19020002 | runtime error. |
| 19030001 | crypto operation error. |
**示例:**
```js
import cryptoCert from '@ohos.security.cert';
// 证书扩展域段二进制数据,需业务自行赋值
let encodingData = null;
let encodingBlob = {
data: encodingData,
// 根据encodingData的格式进行赋值,仅支持FORMAT_DER
encodingFormat: cryptoCert.EncodingFormat.FORMAT_DER
};
cryptoCert.createCertExtension(encodingBlob, function (error, certExt) {
if (error != null) {
console.log("createCertExtension failed, errCode: " + error.code + ", errMsg: " + error.message);
} else {
console.log("createCertExtension success");
let res = certExt.checkCA()
}
});
```
## cryptoCert.createX509Crl
createX509Crl(inStream : EncodingBlob, callback : AsyncCallback\<X509Crl>) : void
表示创建X509证书吊销列表的对象。
表示创建X509证书吊销列表的对象,使用Callback回调异步返回结果
**系统能力:** SystemCapability.Security.Cert
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------- | ---- | ------------------------------ |
| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 |
| callback | AsyncCallback\<X509Crl> | 是 | 回调函数。表示证书吊销列表对象 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | ------------------------------ |
| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 |
| callback | AsyncCallback\<[X509Crl](#x509crl)> | 是 | 回调函数。表示证书吊销列表对象 |
**错误码:**
......@@ -1161,7 +1528,7 @@ cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) {
createX509Crl(inStream : EncodingBlob) : Promise\<X509Crl>
表示创建X509证书吊销列表的对象。
表示创建X509证书吊销列表的对象,使用Promise方式异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -1173,9 +1540,9 @@ createX509Crl(inStream : EncodingBlob) : Promise\<X509Crl>
**返回值**
| 类型 | 说明 |
| ----------------- | -------------------- |
| Promise\<X509Crl> | 表示证书吊销列表对象 |
| 类型 | 说明 |
| ----------------------------- | -------------------- |
| Promise\<[X509Crl](#x509crl)> | 表示证书吊销列表对象 |
**错误码:**
......@@ -1294,7 +1661,7 @@ cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) {
getEncoded(callback : AsyncCallback\<EncodingBlob>) : void
表示获取X509证书吊销列表的序列化数据。
表示获取X509证书吊销列表的序列化数据,使用Callback回调异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -1344,7 +1711,7 @@ cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) {
getEncoded() : Promise\<EncodingBlob>
表示获取X509证书吊销列表的序列化数据。
表示获取X509证书吊销列表的序列化数据,使用Promise方式异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -1390,7 +1757,7 @@ cryptoCert.createX509Crl(encodingBlob).then(x509Crl => {
verify(key : cryptoFramework.PubKey, callback : AsyncCallback\<void>) : void
表示对X509证书吊销列表进行验签。验签支持RSA算法。
表示对X509证书吊销列表进行验签,使用Callback回调异步返回结果。验签支持RSA算法。
**系统能力:** SystemCapability.Security.Cert
......@@ -1442,7 +1809,7 @@ cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) {
verify(key : cryptoFramework.PubKey) : Promise\<void>
表示对X509证书吊销列表进行验签。验签支持RSA算法。
表示对X509证书吊销列表进行验签,使用Promise方式异步返回结果。验签支持RSA算法。
**系统能力:** SystemCapability.Security.Cert
......@@ -1677,7 +2044,7 @@ getRevokedCert(serialNumber : number) : X509CrlEntry
| 类型 | 说明 |
| ---------------------- | --------------------- |
| X509CrlEntry | 表示被吊销X509证书对象 |
| [X509CrlEntry](#x509crlentry) | 表示被吊销X509证书对象 |
**错误码:**
......@@ -1724,15 +2091,15 @@ getRevokedCertWithCert(cert : X509Cert) : X509CrlEntry
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | -------- | ---- | ------------ |
| cert | X509Cert | 是 | 表示证书对象 |
| 参数名 | 类型 | 必填 | 说明 |
| ------ | --------------------- | ---- | ------------ |
| cert | [X509Cert](#x509cert) | 是 | 表示证书对象 |
**返回值**:
| 类型 | 说明 |
| ------------ | -------------------- |
| X509CrlEntry | 表示被吊销X509证书对象 |
| [X509CrlEntry](#x509crlentry) | 表示被吊销X509证书对象 |
**错误码:**
......@@ -1773,15 +2140,15 @@ cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) {
getRevokedCerts(callback : AsyncCallback<Array\<X509CrlEntry>>) : void
表示获取被吊销X509证书列表。
表示获取被吊销X509证书列表,使用Callback回调异步返回结果
**系统能力:** SystemCapability.Security.Cert
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | -------------------------------- |
| callback | AsyncCallback<Array\<X509CrlEntry>> | 是 | 回调函数。表示被吊销X509证书列表 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------------------- | ---- | -------------------------------- |
| callback | AsyncCallback<Array\<[X509CrlEntry](#x509crlentry)>> | 是 | 回调函数。表示被吊销X509证书列表 |
**错误码:**
......@@ -1822,15 +2189,15 @@ cryptoCert.createX509Crl(encodingBlob, function (error, x509Crl) {
getRevokedCerts() : Promise<Array\<X509CrlEntry>>
表示获取被吊销X509证书列表。
表示获取被吊销X509证书列表,使用Promise方式异步返回结果
**系统能力:** SystemCapability.Security.Cert
**返回值**:
| 类型 | 说明 |
| ----------------------------- | ---------------------- |
| Promise<Array\<X509CrlEntry>> | 表示被吊销X509证书列表 |
| 类型 | 说明 |
| ---------------------------------------------- | ---------------------- |
| Promise<Array\<[X509CrlEntry](#x509crlentry)>> | 表示被吊销X509证书列表 |
**错误码:**
......@@ -2141,7 +2508,7 @@ let validator = cryptoCert.createCertChainValidator("PKIX");
validate(certChain : CertChainData, callback : AsyncCallback\<void>) : void
表示校验X509证书链。
表示校验X509证书链,使用Callback回调异步返回结果
由于端侧系统时间不可信,证书链校验不包含对证书有效时间的校验。如果需要检查证书的时间有效性,可使用X509证书的[checkValidityWithDate](#checkvaliditywithdate)方法进行检查。详见[证书规格](../../security/cert-overview.md#证书规格)
**系统能力:** SystemCapability.Security.Cert
......@@ -2196,7 +2563,7 @@ validator.validate(certChainData, function (error, data) {
validate(certChain : CertChainData) : Promise\<void>
表示校验X509证书链。
表示校验X509证书链,使用Promise方式异步返回结果
由于端侧系统时间不可信,证书链校验不包含对证书有效时间的校验。如果需要检查证书的时间有效性,可使用X509证书的[checkValidityWithDate](#checkvaliditywithdate)方法进行检查。详见[证书规格](../../security/cert-overview.md#证书规格)
**系统能力:** SystemCapability.Security.Cert
......@@ -2281,7 +2648,7 @@ let algorithm = validator.algorithm;
getEncoded(callback : AsyncCallback\<EncodingBlob>) : void
表示获取被吊销证书的序列化数据。
表示获取被吊销证书的序列化数据,使用Callback回调异步返回结果
**系统能力:** SystemCapability.Security.Cert
......@@ -2319,7 +2686,7 @@ x509CrlEntry.getEncoded(function (error, data) {
getEncoded() : Promise\<EncodingBlob>
表示获取被吊销证书的序列化数据。
表示获取被吊销证书的序列化数据,使用Promise方式异步返回结果
**系统能力:** SystemCapability.Security.Cert
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册