#二进制格式 #CBOR #二进制 #序列化 #命令行 #格式

app dcbor-cli

确定性CBOR("dCBOR")的命令行解析器/验证器

7个版本

0.5.1 2024年7月1日
0.5.0 2024年5月7日
0.4.1 2024年4月11日
0.4.0 2024年3月31日
0.3.2 2023年12月23日

#269 in 编码

Download history 126/week @ 2024-05-02 21/week @ 2024-05-09 3/week @ 2024-05-16 3/week @ 2024-05-23 2/week @ 2024-06-06 2/week @ 2024-06-13 159/week @ 2024-06-27 36/week @ 2024-07-04

每月475次下载

BSD-2-Clause-Patent

19KB
129

区块链共同体的确定性CBOR("dCBOR")命令行解析器/验证器

由Wolf McNally创建


dcbor 是一个基于同名crate的命令行确定性CBOR("dCBOR")验证和诊断工具。

  • 验证dCBOR输入。
  • 接受十六进制或二进制格式的输入。
  • 以多种方式格式化输出
    • CBOR诊断表示法(紧凑或注解)。
    • 十六进制(紧凑或注解)。
    • 二进制

安装

要从crates.io安装,运行

cargo install dcbor-cli

要从源安装,克隆此仓库,切换到其根目录并运行

cargo install --path .

命令行语法

这是通过键入 dcbor --help 输出的命令行语法

Command line parser/validator for deterministic CBOR ("dCBOR").

Usage: dcbor [OPTIONS] [HEX]

Arguments:
  [HEX]
          Input dCBOR as hexadecimal. If not provided here or input format is binary, input is read from STDIN

Options:
  -i, --in <IN>
          The input format

          [default: hex]

          Possible values:
          - hex: Hexadecimal
          - bin: Raw binary

  -o, --out <OUT>
          The output format

          [default: diag]

          Possible values:
          - diag: CBOR diagnostic notation
          - hex:  Hexadecimal
          - bin:  Raw binary
          - none: No output: merely succeeds on validation of input

  -c, --compact
          Output diagnostic notation or hexadecimal in compact form. Ignored for other output formats

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

示例

验证dCBOR并将其以CBOR诊断表示法打印出来

$ dcbor 6548656C6C6F
"Hello"
$ CBOR_HEX=d99d6ca4015059f2293a5bce7d4de59e71b4207ac5d202c11a6035970003754461726b20507572706c652041717561204c6f766504787b4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742c2073656420646f20656975736d6f642074656d706f7220696e6369646964756e74207574206c61626f726520657420646f6c6f7265206d61676e6120616c697175612e
$ dcbor $CBOR_HEX
40300(
   {
      1:
      h'59f2293a5bce7d4de59e71b4207ac5d2',
      2:
      1(2021-02-24T00:00:00Z),   / date /
      3:
      "Dark Purple Aqua Love",
      4:
      "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
   }
)

$ dcbor --compact $CBOR_HEX
40300({1: h'59f2293a5bce7d4de59e71b4207ac5d2', 2: 1(1614124800), 3: "Dark Purple Aqua Love", 4: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."})

验证dCBOR并将其以注解十六进制打印出来

$ dcbor --out hex $CBOR_HEX
d9 9d6c                                  # tag(40300)
   a4                                    # map(4)
      01                                 # unsigned(1)
      50                                 # bytes(16)
         59f2293a5bce7d4de59e71b4207ac5d2
      02                                 # unsigned(2)
      c1                                 # tag(1) date
         1a60359700                      # unsigned(1614124800)
      03                                 # unsigned(3)
      75                                 # text(21)
         4461726b20507572706c652041717561204c6f7665 # "Dark Purple Aqua Love"
      04                                 # unsigned(4)
      78 7b                              # text(123)
         4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742c2073656420646f20656975736d6f642074656d706f7220696e6369646964756e74207574206c61626f726520657420646f6c6f7265206d61676e6120616c697175612e # "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."

将dCBOR从十六进制转换为二进制,然后再转换回来

# Write the binary to a file using stdout.
$ dcbor --out bin $CBOR_HEX >test.bin

# Read it back in from the same file.
$ dcbor --in bin --out hex --compact <test.bin
d99d6ca4015059f2293a5bce7d4de59e71b4207ac5d202c11a6035970003754461726b20507572706c652041717561204c6f766504787b4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742c2073656420646f20656975736d6f642074656d706f7220696e6369646964756e74207574206c61626f726520657420646f6c6f7265206d61676e6120616c697175612e

状态 - 测试版

dcbor 目前处于积极开发阶段,处于alpha测试阶段。在经过进一步测试和审计之前,不应将其用于生产任务。请参阅 区块链共同体的开发阶段

财务支持

dcborBlockchain Commons 的一个项目。我们自豪地是一个“非营利”的社会福利公司,致力于开源和开放开发。我们的工作完全由捐赠和与您这样的人的合作伙伴关系资助。每一笔捐赠都将用于构建开放工具、技术和方法,以维持和推进区块链和互联网安全基础设施,并促进开放网络。

为支持dcbor和其他项目的进一步发展,请考虑通过持续每月赞助的方式成为区块链通用协会的赞助者GitHub Sponsor。您还可以在我们的BTCPay 服务器上用比特币支持区块链通用协会。

贡献

我们鼓励通过问题和拉取请求进行公开贡献!请查阅CONTRIBUTING.md以了解我们的开发流程详情。所有对本存储库的贡献都需要签署GPG签名的贡献者许可协议

讨论

讨论区块链通用协会及其项目的最佳场所是我们在GitHub上的讨论区域。

戈尔迪安开发者社区。对于想要讨论互操作性钱包规范的规范和开源开发者,请使用戈尔迪安开发者社区仓库的讨论区域。这里是讨论戈尔迪安规范,如戈尔迪安信封bc-shamir分片密钥重建bc-ur,以及更大的戈尔迪安架构、其独立性、隐私、弹性和开放性原则和宏观架构理念(包括空气隔离,本社区的原名)的地方。

戈尔迪安用户社区。对于戈尔迪安参考应用的用户,包括戈尔迪安协调器戈尔迪安种子工具戈尔迪安服务器戈尔迪安钱包SpotBit,以及我们的CLI 应用程序系列。这是一个讨论错误报告和功能请求以及探讨我们的参考应用如何体现戈尔迪安原则的地方。

区块链通用讨论。对于区块链通用协会的开发者、实习生和赞助者,请使用社区仓库的讨论区域来讨论一般性的区块链通用协会问题、实习生项目或其他不在戈尔迪安开发者社区戈尔迪安用户社区范围内的话题。

其他问题 & 问题

作为一个开源、开放开发的社区,区块链通用协会没有资源直接支持我们的项目。请将讨论区域视为可能获得答案的地方。或者,请使用此仓库的问题功能。不幸的是,我们无法保证响应时间。

如果您公司需要使用我们项目,需要支持,请直接联系我们,了解相关选项。我们可能能够为您提供我们贡献者之一的支持合同,或者我们可以指引您到其他能够提供所需合同支持的组织。

致谢

以下人员直接为此存储库做出了贡献。您可以参与其中,在此处添加您的名字。第一步是学习如何从我们的 CONTRIBUTING.md 文档中了解如何贡献。

姓名 角色 Github Email GPG指纹
Christopher Allen 主要架构师 @ChristopherA <[email protected]> FDFE 14A5 4ECB 30FC 5D22 74EF F8D3 6C91 3574 05ED
Wolf McNally 首席研究员/工程师 @WolfMcNally <[email protected]> 9436 52EE 3844 1760 C3DC  3536 4B6C 2FCF 8947 80AE

负责任的披露

我们希望确保所有软件对每个人都是安全的。如果您发现了安全漏洞,我们感谢您以负责任的方式向我们披露。很遗憾,我们目前不能提供赏金。

我们要求您提供诚意,并尽最大努力不泄露信息或损害任何用户、他们的数据或我们的开发者社区。在您公布之前,请给我们合理的时间来修复问题。在发现过程中,不要欺骗我们的用户或我们。我们承诺不对指出问题的研究人员采取法律行动,前提是他们尽力遵守以下指南。

报告漏洞

请通过电子邮件私下报告疑似的安全漏洞至 [email protected](请勿用此电子邮件寻求支持)。请勿为疑似的安全漏洞创建公开可见的问题。

以下密钥可以用于向开发者传达敏感信息

姓名 指纹
Christopher Allen FDFE 14A5 4ECB 30FC 5D22 74EF F8D3 6C91 3574 05ED

您可以通过运行以下命令导入个人的指纹:gpg --recv-keys "<fingerprint>" 确保在包含空格的指纹周围加上引号。

依赖项

~3.5MB
~63K SLoC