rawdog 是一个精简的、无依赖* 的 Swift 软件包,旨在简化和加速编程对象的二进制编码和解码过程。
该库的主要效用在于其表达静态分配内存空间的能力,同时自动处理对齐、字节序以及与其他类型的初始化和转换。
在 C 语言中,以下语法常见且高效:uint8_t[1024]
。在 Swift 中,尝试实现类似的结果(具有静态长度的非对齐内存分配)简直是一场噩梦……元组字面量在语法上比 C 语言的等价物冗长得多,并且灵活性也明显不足。这正是 rawdog 旨在解决和构建的 Swift 特有问题,同时围绕类型严格性和内存安全维护了一种合理但强大的模式,而 Swift 语法正是以这两者著称。
我对代码本身的结构和清晰度非常满意,但文档覆盖率尚不完整。
rawdog 为所有密码学功能分发和构建其自身的源代码(用 C 语言编写),包括:
这些源代码附带了一整套测试,这些测试已在 x86 和 ARM、macOS 和 Linux 上通过测试。该代码预计也能原生处理字节序,但坦率地说,我没有验证其能力的手段
rawdog 密码学建立在用 C 语言编写的各种开源贡献之上。这些参考资料均按其原始作者提供的 MIT、ISC 或公共领域许可证获取。所有获得的源代码都已在此 rawdog 软件包中进行了大量修改和重新分发,并采用 MIT 许可证。
密码学源代码修改和重新分发于 2024 年 6 月
blake2 哈希 - 声明来自公共领域,测试向量在 Swift XCTest 中引用。感谢 Jean-Philippe Aumasson、Samuel Neves、Zooko Wilcox-O’Hearn、Christian Winnerlein。
curve25519 密钥对与 ed25519 签名 - 声明采用 MIT 许可证,单元测试在修改中维护。感谢 Mehdi Sotoodeh。
crypt_blowfish - 声明来自公共领域,单元测试在修改中维护。感谢 Solar Designer。
chacha、poly1305 和 chachapoly - 声明采用 MIT 许可证,单元测试在修改中维护。感谢 Grigori Goronzy。
SHA(实现 1、256、512)和 MD5 哈希 - 声明来自公共领域,单元测试在修改中维护。感谢 WaterJuice。
Argon2 KDF - 声明来自公共领域,单元测试在修改中维护。感谢 Daniel Dinu、Dmitry Khovratovich、Jean-Philippe Aumasson 和 Samuel Neves。
hchacha20 - 声明采用 ISC 许可证,单元测试在修改中维护。感谢 Frank Denis。
本项目遵循 SemVer 2.0.0 中概述的标签语义。
鉴于此套件中宏的 критическое 使用,rawdog 需要 Swift 语言 v5.9.0 或更高版本才能成功构建和部署。
rawdog 及其所有源代码均在 MIT 许可证下提供,不提供任何担保或支持。