SwiftASN1

ASN.1 类型和 DER 序列化的实现。

概述

ASN.1 和 DER 编码方案是一种常用的对象序列化格式。ASN.1 在通用计算中最常见的用例是在密码学领域,但在各个领域都有许多用例。该模块提供了一些 ASN.1 类型的实现,以及 ASN.1 的 DER 序列化格式。

ASN.1 可以抽象地用于描述几乎任何类型的对象。ASN.1 对象由原始类型或复合类型(称为“构造”类型)组成。单个标量对象可以组合成聚合类型,并可以进行任意组合以形成抽象对象格式。

重要的是,ASN.1 对象描述不定义这些对象的特定编码。相反,有多种可能的方式来序列化或反序列化 ASN.1 对象。一些最突出的是 BER(基本编码规则)、CER(规范编码规则)、DER(可区分编码规则)和 XER(XML 编码规则)。对于密码学用例,DER 是标准选择,因为给定的 ASN.1 对象在 DER 下只能以一种方式进行编码。这使得签名和验证变得更加容易,因为至少在原则上可以完美地重建已解析对象的序列化。

此模块提供以下几个组成部分

  1. ASN.1 对象的高级表示,以对象节点树的形式(ASN1Node)。
  2. 一个 DER 解析器,可以从序列化字节构造 ASN.1 树(DER.parse(_:))。
  3. 一个 DER 序列化器,可以从 ASN.1 树构造序列化字节(DER.Serializer)。
  4. 许多内置的 ASN.1 类型,代表常见的构造。

这些组成部分结合在一起,为 ASN.1 的 DER 表示提供支持,适用于各种密码学用途。

入门

要使用 swift-asn1,请将以下依赖项添加到您的 Package.swift 中

dependencies: [
    .package(url: "https://github.com/apple/swift-asn1.git", .upToNextMajor(from: "1.0.0"))
]

然后,您可以将特定的产品依赖项添加到您的目标中

dependencies: [
    .product(name: "SwiftASN1", package: "swift-asn1"),
]

有关如何使用代码的示例,请查阅 文档。存储库本身也提供了许多示例。