结构体
struct DerBlob
public struct DerBlob <: Equatable<DerBlob> & Hashable {
public init(content: Array<Byte>)
}
功能:Crypto 支持配置二进制证书流,用户读取二进制证书数据并创建 DerBlob 对象后可将其解析成 X509Certificate / X509CertificateRequest / PublicKey / PrivateKey 对象。
prop body
public prop body: Array<Byte>
功能:DerBlob 对象中的字符序列。
prop size
public prop size: Int64
功能:DerBlob 对象中字符序列的大小。
类型:Int64
init(Array)
public init(content: Array<Byte>)
功能:构造 DerBlob 对象。
参数:
func hashCode()
public override func hashCode(): Int64
功能:返回 DerBlob 对象哈希值。
返回值:
operator func !=(DerBlob)
public override operator func !=(other: DerBlob): Bool
功能:判不等。
参数:
返回值:
- Bool - 若对象不同,返回 true;否则,返回 false。
operator func ==(DerBlob)
public override operator func ==(other: DerBlob): Bool
功能:判等。
参数:
返回值:
- Bool - 若对象相同,返回 true;否则,返回 false。
struct ExtKeyUsage
public struct ExtKeyUsage <: ToString {
public static let AnyKey = 0u16
public static let ServerAuth = 1u16
public static let ClientAuth = 2u16
public static let EmailProtection = 3u16
public static let CodeSigning = 4u16
public static let OCSPSigning = 5u16
public static let TimeStamping = 6u16
public init(keys: Array<UInt16>)
public override func toString(): String
}
功能:数字证书扩展字段中通常会包含携带扩展密钥用法说明,目前支持的用途有:ServerAuth、ClientAuth、EmailProtection、CodeSigning、OCSPSigning、TimeStamping。
static let AnyKey
public static let AnyKey = 0u16
功能:表示应用于任意用途。
类型:UInt16
static let ClientAuth
public static let ClientAuth = 2u16
功能:表示用于 SSL 的客户端验证。
类型:UInt16
static let CodeSigning
public static let CodeSigning = 4u16
功能:表示用于代码签名。
类型:UInt16
static let EmailProtection
public static let EmailProtection = 3u16
功能:表示用于电子邮件的加解密、签名等。
类型:UInt16
static let OCSPSigning
public static let OCSPSigning = 5u16
功能:用于对 OCSP 响应包进行签名。
类型:UInt16
static let ServerAuth
public static let ServerAuth = 1u16
功能:表示用于 SSL 的服务端验证。
类型:UInt16
static let TimeStamping
public static let TimeStamping = 6u16
功能:用于将对象摘要值与时间绑定。
类型:UInt16
init(Array<UInt16>)
public init(keys: Array<UInt16>)
功能:构造指定用途的扩展密钥用法,需要注意同一个密钥可以有多种用途。
参数:
func toString()
public override func toString(): String
功能:生成扩展密钥用途字符串。
返回值:
- String - 证书扩展密钥用途字符串。
struct KeyUsage
public struct KeyUsage <: ToString {
public static let DigitalSignature = 0x0080u16
public static let NonRepudiation = 0x0040u16
public static let KeyEncipherment = 0x0020u16
public static let DataEncipherment = 0x0010u16
public static let KeyAgreement = 0x0008u16
public static let CertSign = 0x0004u16
public static let CRLSign = 0x0002u16
public static let EncipherOnly = 0x0001u16
public static let DecipherOnly = 0x0100u16
public init(keys: UInt16)
public override func toString(): String
}
功能:数字证书扩展字段中通常会包含携带公钥的用法说明,目前支持的用途有:DigitalSignature、NonRepudiation、KeyEncipherment、DataEncipherment、KeyAgreement、CertSign、CRLSign、EncipherOnly、DecipherOnly。
static let CRLSign
public static let CRLSign = 0x0002u16
功能:表示私钥可用于对 CRL 签名,而公钥可用于验证 CRL 签名。
类型:UInt16
static let CertSign
public static let CertSign = 0x0004u16
功能:表示私钥用于证书签名,而公钥用于验证证书签名,专用于 CA 证书。
类型:UInt16
static let DataEncipherment
public static let DataEncipherment = 0x0010u16
功能:表示公钥用于直接加密数据。
类型:UInt16
static let DecipherOnly
public static let DecipherOnly = 0x0100u16
功能:表示证书中的公钥在密钥协商过程中,仅仅用于解密计算,配合 key Agreement 使用才有意义。
类型:UInt16
static let DigitalSignature
public static let DigitalSignature = 0x0080u16
功能:表示私钥可以用于除了签发证书、签发 CRL 和非否认性服务的各种数字签名操作,而公钥用来验证这些签名。
类型:UInt16
static let EncipherOnly
public static let EncipherOnly = 0x0001u16
功能:表示证书中的公钥在密钥协商过程中,仅仅用于加密计算,配合 key Agreement 使用才有意义。
类型:UInt16
static let KeyAgreement
public static let KeyAgreement = 0x0008u16
功能:表示密钥用于密钥协商。
类型:UInt16
static let KeyEncipherment
public static let KeyEncipherment = 0x0020u16
功能:表示密钥用来加密传输其他的密钥。
类型:UInt16
static let NonRepudiation
public static let NonRepudiation = 0x0040u16
功能:表示私钥可以用于进行非否认性服务中的签名,而公钥用来验证签名。
类型:UInt16
init(UInt16)
public init(keys: UInt16)
功能:构造指定用途的扩展密钥用法,需要注意同一个密钥可以有多种用途。
参数:
- keys: UInt16 - 密钥的用法,建议使用本结构中所提供的密钥用法变量通过按位或的方式传入参数。
func toString()
public override func toString(): String
功能:生成密钥用途字符串。
返回值:
- String - 证书密钥用途字符串。
struct Pem
public struct Pem <: Collection<PemEntry> & ToString {
public Pem(private let items: Array<PemEntry>)
}
功能:结构体 Pem 为条目序列,可以包含多个 PemEntry。
prop size
public override prop size: Int64
功能:条目序列的数量。
类型:Int64
Pem(Array<PemEntry>)
public Pem(private let items: Array<PemEntry>)
功能:构造 Pem 对象。
参数:
static func decode(String)
public static func decode(text: String): Pem
功能:将 PEM 文本解码为条目序列。
参数:
- text: String - PEM 字符串。
返回值:
- Pem - PEM 条目序列。
func encode()
public func encode(): String
功能:返回PEM格式的字符串。行结束符将根据当前操作系统生成。
返回值:
- String - PEM 格式的字符串。
func isEmpty()
public override func isEmpty(): Bool
功能:判断 PEM 文本解码为条目序列是否为空。
返回值:
- Bool - PEM 文本解码为条目序列为空返回 true;否则,返回 false。
func iterator()
public override func iterator(): Iterator<PemEntry>
功能:生成 PEM 文本解码为条目序列的迭代器。
返回值:
func toString()
public override func toString(): String
功能:返回一个字符串,字符串内容是包含每个条目序列的标签。
返回值:
- String - 包含每个条目序列的标签的字符串。
struct PemEntry
public struct PemEntry <: ToString {
public PemEntry(
public let label: String,
public let headers: Array<(String, String)>,
public let body: ?DerBlob
)
public init(label: String, body: DerBlob)
}
功能:PEM 文本格式经常用于存储证书和密钥,PEM 编码结构包含以下几个部分:
第一行是 “-----BEGIN”,标签和 “-----” 组成的utf8编码的字符串; 中间是正文,是实际二进制内容经过 base64 编码得到的可打印字符串,详细的PEM编码规范可参考 RFC 7468; 最后一行是 “-----END”,标签和 “-----” 组成的 utf8 编码的字符串,详见 RFC 1421。 在旧版的 PEM 编码标准中在第一行和正文之间还包含条目头。
为了支持不同的用户场景,我们提供了 PemEntry 和 Pem 类型,PemEntry 用于存储单个PEM 基础结构。
static let LABEL_CERTIFICATE
public static let LABEL_CERTIFICATE = "CERTIFICATE"
功能:记录条目类型为证书。
类型:String
static let LABEL_CERTIFICATE_REQUEST
public static let LABEL_CERTIFICATE_REQUEST = "CERTIFICATE REQUEST"
功能:记录条目类型为证书签名请求。
类型:String
static let LABEL_DH_PARAMETERS
public static let LABEL_DH_PARAMETERS = "DH PARAMETERS"
功能:记录条目类型为 DH 密钥参数。
类型:String
static let LABEL_EC_PARAMETERS
public static let LABEL_EC_PARAMETERS = "EC PARAMETERS"
功能:记录条目类型为椭圆曲线参数。
类型:String
static let LABEL_EC_PRIVATE_KEY
public static let LABEL_EC_PRIVATE_KEY = "EC PRIVATE KEY"
功能:记录条目类型为椭圆曲线私钥。
类型:String
static let LABEL_ENCRYPTED_PRIVATE_KEY
public static let LABEL_ENCRYPTED_PRIVATE_KEY = "ENCRYPTED PRIVATE KEY"
功能:记录条目类型为 PKCS #8 标准加密的私钥。
类型:String
static let LABEL_PRIVATE_KEY
public static let LABEL_PRIVATE_KEY = "PRIVATE KEY"
功能:记录条目类型为 PKCS #8 标准未加密的私钥。
类型:String
static let LABEL_PUBLIC_KEY
public static let LABEL_PUBLIC_KEY = "PUBLIC KEY"
功能:记录条目类型为公钥。
类型:String
static let LABEL_RSA_PRIVATE_KEY
public static let LABEL_RSA_PRIVATE_KEY = "RSA PRIVATE KEY"
功能:记录条目类型为 RSA 私钥。
类型:String
static let LABEL_SM2_PRIVATE_KEY
public static let LABEL_SM2_PRIVATE_KEY = "SM2 PRIVATE KEY"
功能:记录条目类型为 SM2 私钥。
类型:String
static let LABEL_X509_CRL
public static let LABEL_X509_CRL = "X509 CRL"
功能:记录条目类型为证书吊销列表。
类型:String
PemEntry(String, Array<(String, String)>, ?DerBlob)
public PemEntry(
public let label: String,
public let headers: Array<(String, String)>,
public let body: ?DerBlob
)
功能:构造 PemEntry 对象。
参数:
body
public let body: ?DerBlob
功能:PemEntry 实例的二进制内容。
类型:?DerBlob
headers
public let headers: Array<(String, String)>
功能:PemEntry 实例的条目头。
label
public let label: String
功能:PemEntry 实例的标签。
类型:String
init(String, DerBlob)
public init(label: String, body: DerBlob)
功能:构造 PemEntry 对象。
参数:
func encode()
public func encode(): String
功能:返回PEM格式的字符串。行结束符将根据当前操作系统生成。
返回值:
- String - PEM 格式的字符串。
func header(String)
public func header(name: String): Iterator<String>
功能:通过条目头名称,找到对应条目内容。
参数:
- name: String - 条目头名称。
返回值:
func toString()
public override func toString(): String
功能:返回 PEM 对象的标签和二进制内容的长度。
返回值:
- String - PEM 对象的标签和二进制内容的长度。
struct SerialNumber
public struct SerialNumber <: Equatable<SerialNumber> & Hashable & ToString {
public init(length!: UInt8 = 16)
}
功能: 结构体 SerialNumber 为数字证书的序列号,是数字证书中的一个唯一标识符,用于标识数字证书的唯一性。根据规范,证书序列号的长度不应超过 20 字节。详见rfc5280。
init(UInt8)
public init(length!: UInt8 = 16)
功能:生成指定长度的随机序列号。
参数:
异常:
- X509Exception - length 等于 0 或大于 20 时,抛出异常。
func hashCode()
public override func hashCode(): Int64
功能:返回证书序列号哈希值。
返回值:
- Int64 - 对证书序列号对象进行哈希计算后得到的结果。
func toString()
public override func toString(): String
功能:生成证书序列号字符串,格式为 16 进制。
返回值:
- String - 证书序列号字符串。
operator func !=(SerialNumber)
public override operator func !=(other: SerialNumber): Bool
功能:判不等。
参数:
- other: SerialNumber - 被比较的证书序列号对象。
返回值:
- Bool - 若序列号不同,返回 true;否则,返回 false。
operator func ==(SerialNumber)
public override operator func ==(other: SerialNumber): Bool
功能:判等。
参数:
- other: SerialNumber - 被比较的证书序列号对象。
返回值:
- Bool - 若序列号相同,返回 true;否则,返回 false。
struct Signature
public struct Signature <: Equatable<Signature> & Hashable {
}
功能:数字证书的签名,用来验证身份的正确性。
prop signatureValue
public prop signatureValue: DerBlob
功能:返回证书签名的二进制。
类型:DerBlob
func hashCode()
public override func hashCode(): Int64
功能:返回证书签名哈希值。
返回值:
- Int64 - 对证书签名对象进行哈希计算后得到的结果。
operator func !=(Signature)
public override operator func !=(other: Signature): Bool
功能:判不等。
参数:
- other: Signature - 被比较的证书签名。
返回值:
- Bool - 若证书签名不同,返回 true;否则,返回 false。
operator func ==(Signature)
public override operator func ==(other: Signature): Bool
功能:判等。
参数:
- other: Signature - 被比较的证书签名。
返回值:
- Bool - 若证书签名相同,返回 true;否则,返回 false。
struct VerifyOption
public struct VerifyOption {
public var time: DateTime = DateTime.now()
public var dnsName: String = ""
public var roots: Array<X509Certificate> = X509Certificate.systemRootCerts()
public var intermediates: Array<X509Certificate> = Array<X509Certificate>()
}
dnsName
public var dnsName: String = ""
功能:校验域名,默认为空,只有设置域名时才会进行此处校验。
类型:String
intermediates
public var intermediates: Array<X509Certificate> = Array<X509Certificate>()
功能:中间证书链,默认为空。
类型:Array<X509Certificate>
roots
public var roots: Array<X509Certificate> = X509Certificate.systemRootCerts()
功能:根证书链,默认为系统根证书链。
类型:Array<X509Certificate>
time
public var time: DateTime = DateTime.now()
功能:校验时间,默认为创建选项的时间。
类型:DateTime
struct X509CertificateInfo
public struct X509CertificateInfo {
public var serialNumber: SerialNumber
public var notBefore: DateTime
public var notAfter: DateTime
public var subject: ?X509Name
public var dnsNames: Array<String>
public var emailAddresses: Array<String>
public var IPAddresses: Array<IP>
public var keyUsage: ?KeyUsage
public var extKeyUsage: ?ExtKeyUsage
public init(
serialNumber!: ?SerialNumber = None,
notBefore!: ?DateTime = None,
notAfter!: ?DateTime = None,
subject!: ?X509Name = None,
dnsNames!: Array<String> = Array<String>(),
emailAddresses!: Array<String> = Array<String>(),
IPAddresses!: Array<IP> = Array<IP>(),
keyUsage!: ?KeyUsage = None,
extKeyUsage!: ?ExtKeyUsage = None
)
}
功能:X509CertificateInfo 结构包含了证书信息,包括证书序列号、有效期、实体可辨识名称、域名、email 地址、IP 地址、密钥用法和扩展密钥用法。
IPAddresses
public var IPAddresses: Array<IP>
功能:记录证书的 IP 地址。
dnsNames
public var dnsNames: Array<String>
功能:记录证书的 DNS 域名。
emailAddresses
public var emailAddresses: Array<String>
功能:记录证书的 email 地址。
extKeyUsage
public var extKeyUsage: ?ExtKeyUsage
功能:记录证书的扩展密钥用法。
类型:?ExtKeyUsage
keyUsage
public var keyUsage: ?KeyUsage
功能:记录证书的密钥用法。
类型:?KeyUsage
notAfter
public var notAfter: DateTime
功能:记录证书有效期的结束日期。
类型:DateTime
notBefore
public var notBefore: DateTime
功能:记录证书有效期的起始日期。
类型:DateTime
serialNumber
public var serialNumber: SerialNumber
功能:记录证书的序列号。
类型:SerialNumber
subject
public var subject: ?X509Name
功能:记录证书实体可辨识名称。
类型:?X509Name
init(?SerialNumber, ?DateTime, ?DateTime, ?X509Name, Array<String>, Array<String>, Array<IP>, ?KeyUsage, ?ExtKeyUsage)
public init(
serialNumber!: ?SerialNumber = None,
notBefore!: ?DateTime = None,
notAfter!: ?DateTime = None,
subject!: ?X509Name = None,
dnsNames!: Array<String> = Array<String>(),
emailAddresses!: Array<String> = Array<String>(),
IPAddresses!: Array<IP> = Array<IP>(),
keyUsage!: ?KeyUsage = None,
extKeyUsage!: ?ExtKeyUsage = None
)
功能:构造 X509CertificateInfo 对象。
参数:
- serialNumber!: ?SerialNumber - 数字证书序列号,默认值为 None,使用默认值时默认的序列号长度为 128 比特。
- notBefore!: ?DateTime - 数字证书有效期开始时间,默认值为 None,使用默认值时默认的时间为 X509CertificateInfo 创建的时间。
- notAfter!: ?DateTime - 数字证书有效期截止时间,默认值为 None,使用默认值时默认的时间为 notBefore 往后 1 年的时间。
- subject!: ?X509Name - 数字证书使用者信息,默认值为 None。
- dnsNames!: Array<String> - 域名列表,需要用户保证输入域名的有效性,默认值为空的字符串数组。
- emailAddresses!: Array<String> - email 地址列表,需要用户保证输入 email 的有效性,默认值为空的字符串数组。
- IPAddresses!: Array<IP> - IP 地址列表,默认值为空的 IP 数组。
- keyUsage!: ?KeyUsage - 密钥用法,默认值为 None。
- extKeyUsage!: ?ExtKeyUsage - 扩展密钥用法,默认值为 None。
异常:
- X509Exception - 输入的 IP 地址列表中包含无效的 IP 地址,则抛出异常。
struct X509CertificateRequestInfo
public struct X509CertificateRequestInfo {
public var subject: ?X509Name
public var dnsNames: Array<String>
public var emailAddresses: Array<String>
public var IPAddresses: Array<IP>
public init(
subject!: ?X509Name = None,
dnsNames!: Array<String> = Array<String>(),
emailAddresses!: Array<String> = Array<String>(),
IPAddresses!: Array<IP> = Array<IP>()
)
}
X509CertificateRequestInfo 结构包含了证书请求信息,包括证书实体可辨识名称、域名、email 地址和 IP 地址。
IPAddresses
public var IPAddresses: Array<IP>
功能:记录证书签名请求的 IP 地址。
dnsNames
public var dnsNames: Array<String>
功能:记录证书签名请求的 DNS 域名。
emailAddresses
public var emailAddresses: Array<String>
功能:记录证书签名请求的 email 地址。
subject
public var subject: ?X509Name
功能:记录证书签名请求的实体可辨识名称。
init(?X509Name, Array<String>, Array<String>, Array<IP>)
public init(
subject!: ?X509Name = None,
dnsNames!: Array<String> = Array<String>(),
emailAddresses!: Array<String> = Array<String>(),
IPAddresses!: Array<IP> = Array<IP>()
)
功能:构造 X509CertificateRequestInfo 对象。
参数:
- subject!: ?X509Name - 数字证书的使用者信息,默认值为 None。
- dnsNames!: Array<String> - 域名列表,需要用户保证输入域名的有效性,默认值为空的字符串数组。
- emailAddresses!: Array<String> - email 地址列表,需要用户保证输入 email 的有效性,默认值为空的字符串数组。
- IPAddresses!: Array<IP> - IP 地址列表,默认值为空的 IP 数组。
异常:
- X509Exception - 输入的 IP 地址列表中包含无效的 IP 地址,则抛出异常。