ASN1Swift 1.2.7

ASN1Swift 1.2.7

Pavel T 维护。



ASN1Swift 1.2.7

  • Pavel Tikhonenko

Carthage compatible CocoaPods Compatible Swift Package Manager compatible Platform GitHub license

ASN1Swift 提供了解码 ASN.1 数据结构的透明接口。ASN.1 数据结构必须使用 BER/DER 编码规则进行编码。为了简化编码和解码过程,ASN1Swift 实现了由 Swift Foundation 提供的 Encoder/Decoder 协议。换句话说,它的工作方式与 JSONEncoder/JSONDecoder 非常相似。

安装

CocoaPods

要使用 CocoaPods 将 ASN1Swift 集成到您的项目中,在您的 Podfile 中指定它

platform :ios, '13.0'

target 'YOUR_TARGET' do
use_frameworks!

pod 'ASN1Swift'
end

然后,运行以下命令

$ pod install

在任何想要使用 ASN1Swift 的 Swift 文件中,使用 import ASN1Swift 导入框架。

Swift Package Manager

要使用 Apple 的 Swift 包管理器进行集成,将以下内容作为依赖项添加到您的 Package.swift

.package(url: "https://github.com/tikhop/ASN1Swift.git", .branch("master"))

然后,将 "ASN1Swift" 指定为目标中您希望使用 ASN1Swift 的依赖项。

最后,运行以下命令

swift package update

Carthage

在您的 Cartfile 中添加以下条目

github "tikhop/ASN1Swift" 

然后运行 carthage update

如果您首次在项目中使用Carthage,您需要按照以下步骤进行操作,具体请参考Carthage之上的说明

需求

  • iOS 10.0+ / OSX 10.11+
  • Swift 5.2+

示例

解码InAppReceipt

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