ASN1Swift 提供了一个透明的接口来解码 ASN.1 数据结构。ASN.1 数据结构必须使用 BER/DER 编码规则进行编码。为了简化编码和解码过程,ASN1Swift 实现了 Swift 基础库提供的 Encoder/Decoder 协议。换句话说,它的工作方式与 JSONEncoder/JSONDecoder 完全相同。
要使用 CocoaPods 将 ASN1Swift 集成到您的项目中,请在您的 Podfile
中指定它
platform :ios, '13.0'
target 'YOUR_TARGET' do
use_frameworks!
pod 'ASN1Swift'
end
然后,运行以下命令
$ pod install
在任何您想使用 ASN1Swift 的 Swift 文件中,使用 import ASN1Swift
导入框架。
要使用 Apple 的 Swift Package Manager 进行集成,请将以下内容作为依赖项添加到您的 Package.swift
中
.package(url: "https://github.com/tikhop/ASN1Swift.git", .branch("master"))
然后,在您希望使用 ASN1Swift 的 Target 中,将 "ASN1Swift"
指定为依赖项。
最后,运行以下命令
swift package update
在您的 Cartfile 中添加以下条目
github "tikhop/ASN1Swift"
然后运行 carthage update
。
如果这是您第一次在项目中使用 Carthage,您需要按照 Carthage 上的说明 完成一些额外的步骤。
let asn1Decoder = ASN1Decoder()
let r = try! asn1Decoder.decode(Receipt.self, from: Data(...))
struct Receipt: ASN1Decodable
{
static var template: ASN1Template
{
return ASN1Template.universal(16).constructed()
}
var oid: ASN1SkippedField
var signedData: SignedData
enum CodingKeys: ASN1CodingKey
{
case oid
case signedData
var template: ASN1Template
{
switch self
{
case .oid:
return .universal(ASN1Identifier.Tag.objectIdentifier)
case .signedData:
return SignedData.template
}
}
}
}
....
库 | 解码时间 |
---|---|
ASN1Swift | 0.154 秒 |
filom/ASN1Decoder | 1.032 秒 |
asn1c | ??? |
mrdepth/ASN1Decoder | ??? |
ASN1Swift 在 BSD-3-Clause 许可下发布。有关更多信息,请参阅 LICENSE。