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

Download history 3/week @ 2024-07-23 4/week @ 2024-07-30 66/week @ 2024-08-13

每月73次下载

Apache-2.0

205KB
5K SLoC

macarunes

这个库提供了一个Macaroons的实现。关于macaroons的介绍,请查看这篇论文,或Python README

假设

  • 我们依赖于类型系统来提供内存安全。秘密在使用后被清除,但不能保证链接器不会优化掉这样的代码。在Rust编译器出现端到端解决方案之前,无法保证在存在内存漏洞的情况下秘密不会泄露。

  • 这个库依赖于协议缓冲区代码的确定性。这由prototk保证。

  • 与Python实现相比,语言有意限制。核心库中唯一需要的情况是进行精确比较(这些比较作为格式字符串生成),设置过期时间,或使用第三方先决条件,该先决条件在授予discharge macaroon之前执行一些任意谓词。

第三方Macaroons

这是满足第三方秘密的算法

  1. 从我们想要添加第三方先决条件的macaroon中获取signature
  2. 向第三方发起RPC,交换signature以获取ThirdPartySecret
  3. 调用Macaroon.add_third_party(location, identifier, third_party_secret)

关于位置

位置是一个不是macaroons签名一部分的提示。库这样做是有意为之,因为论文建议只有密钥才说话。

因此,位置应被视为提示,给出端点的纯文本描述。macaroon中的位置不是discharge的端点;它是一个不可见的标识符,RequestBuilder将遍历该标识符。

对于每个第三方,应该开发一个加载器,以协商协议以获取discharge macaroons。客户端不认识的位置是不可信的。鉴于我们必须信任给我们macaroons的服务器,这既不是妥协也不是限制。

状态

积极开发。

范围

这个库应该提供一个验证器和客户端库。

缺点

  • 这个库使用不足,未来将看到积极的发展。

文档

最新文档始终可在docs.rs找到。

依赖项

约3-5MB
约63K SLoC