4个版本 (破坏性更新)
新 0.4.0 | 2024年8月19日 |
---|---|
0.3.0 | 2023年12月27日 |
0.2.0 | 2023年9月21日 |
0.1.0 | 2023年9月7日 |
#1 in #macaroon
每月73次下载
205KB
5K SLoC
macarunes
这个库提供了一个Macaroons的实现。关于macaroons的介绍,请查看这篇论文,或Python README。
假设
-
我们依赖于类型系统来提供内存安全。秘密在使用后被清除,但不能保证链接器不会优化掉这样的代码。在Rust编译器出现端到端解决方案之前,无法保证在存在内存漏洞的情况下秘密不会泄露。
-
这个库依赖于协议缓冲区代码的确定性。这由prototk保证。
-
与Python实现相比,语言有意限制。核心库中唯一需要的情况是进行精确比较(这些比较作为格式字符串生成),设置过期时间,或使用第三方先决条件,该先决条件在授予discharge macaroon之前执行一些任意谓词。
第三方Macaroons
这是满足第三方秘密的算法
- 从我们想要添加第三方先决条件的macaroon中获取
signature
。 - 向第三方发起RPC,交换
signature
以获取ThirdPartySecret
。 - 调用
Macaroon.add_third_party(location, identifier, third_party_secret)
。
关于位置
位置是一个不是macaroons签名一部分的提示。库这样做是有意为之,因为论文建议只有密钥才说话。
因此,位置应被视为提示,给出端点的纯文本描述。macaroon中的位置不是discharge的端点;它是一个不可见的标识符,RequestBuilder
将遍历该标识符。
对于每个第三方,应该开发一个加载器,以协商协议以获取discharge macaroons。客户端不认识的位置是不可信的。鉴于我们必须信任给我们macaroons的服务器,这既不是妥协也不是限制。
状态
积极开发。
范围
这个库应该提供一个验证器和客户端库。
缺点
- 这个库使用不足,未来将看到积极的发展。
文档
最新文档始终可在docs.rs找到。
依赖项
约3-5MB
约63K SLoC