问题标签 [cbor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
318 浏览

byte - WebAuthn - “凭证公钥”的字节长度

在 WebAuthn 中,验证器数据包含可变长度,attested credential data后跟 (extensions如果有): WebAuthn 规范中的身份验证器数据架构

由于字段是 CBOR 映射,因此它是attested credential data可变的。credential public key

如果有扩展,如何提前知道该字段的字节长度,以便我可以将没有扩展的截断字段传递给 CBOR 库?

我正在使用的 CBOR 库似乎没有处理额外的字节,而且我对 CBOR 的了解还不够,无法知道是否有从第一个字节计算映射字节长度的技巧(或任何其他技巧)。

0 投票
1 回答
255 浏览

bluetooth-lowenergy - Authenticator 评估请求并通过 fidoStatus 特征发送通知来响应

我正在制作一个支持 CTAP BLE 与 WebAuthn 通信的移动身份验证器。我遵循此文档:https ://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#ble-protocol-overview

协议概述如下:

  1. Authenticator 发布 FIDO 服务。

  2. 客户端扫描广告 FIDO 服务的身份验证器。

  3. 客户端对认证者进行特征发现。

  4. 如果尚未配对,客户端和验证器应执行 BLE 配对并创建 LTK。Authenticator 应仅允许来自先前绑定的客户端的连接,而无需用户干预。

  5. 客户端检查 fidoServiceRevisionBitfield 特征是否存在。如果是这样,客户端通过写入具有单个位集的值来选择支持的版本。

  6. 客户端读取 fidoControlPointLength 特征。

  7. 客户端注册有关 fidoStatus 特征的通知。

  8. 客户端将请求(例如注册请求)写入 fidoControlPoint 特征。

  9. 可选地,客户端向 fidoControlPoint 特征写入 CANCEL 命令以取消挂起的请求。

  10. Authenticator 评估请求并通过 fidoStatus 特征发送通知来响应。

  11. 协议在以下任一情况下完成:

    • 客户端取消注册有关 fidoStatus 特征的通知,或者:
    • 连接超时并被身份验证器关闭。

在第 8 步,我收到这样的消息:0x83000700030000000000,我明白

0x83 是味精指令

0x0007 为数据长度

00030000000000 是数据

当我收到这样的消息时,我不知道如何响应 WebAuthn,因为第 10 步说“Authenticator 评估请求并通过通过 fidoStatus 特征发送通知来响应”。

0 投票
1 回答
841 浏览

java - 不能写字段名,需要一个值

当我们从 Jackson 版本 2.8.9 切换到 2.9.8 时,我们在以 CBOR 格式序列化数据时遇到了一些麻烦。事实证明,我们一直在使用的自定义 Jackson 模块在这个新版本中造成了麻烦。这些问题从版本 2.9.0 开始。

我创建了一个重现问题的存储库,发现当我禁用我们的自定义问题时,TemporalAmountModule问题就消失了。我自己没有写,TemporalAmountModule但看起来自定义序列化器和反序列化器是罪魁祸首。这些并没有引入任何复杂的代码,但我真的不明白为什么它们不再正常工作,因为我不熟悉序列化器和反序列化器。

我已经创建了一个存储库来重现我遇到的问题。当您禁用该模块时,您可以看到它工作正常。当您将 jackson 版本更改为 2.8.x(该范围内的最新版本是 2.8.11)时,您可以看到它也可以正常工作。

https://github.com/Archcry/reproduce-jackson-error

预期结果应该与 2.8.9 版(或 2.8.11 版)中的结果相同。Jackson 不应该破坏次要版本中的任何功能,但它可能会弃用某些方法(他们确实这样做了)。不推荐使用的方法不是导致问题的方法,因为我尝试更新它们但最终得到相同的结果。目前的实际结果是错误的说法Can not write a field name, expecting a value

0 投票
1 回答
78 浏览

android - 部分收到 MAKE CREDENTIAL 请求

我可以将 GET_INFO 发送到 webauthn.io 。之后,我可以部分读取 MAKE_CREDENTIAL 请求。总 MAKE_CREDENTIAL 数据长度为 400+。但我只得到 90 多个字节。我没有收到 MAKE_CREDENTIAL 的全部请求。

我收到的请求是

[-125, 1, 95 , 1, -91, 1, 88, 32, 75, 1, 9, -33, -61, -39, 69, -54, -3, 113, -4, -77, 29、83、121、14、-83、-123、70、-121、-15、-106、-17、121、107、-118、-7、32、-44、-74、71、20、 2, -94, 98, 105, 100, 107, 119, 101, 98, 97, 117, 116, 104, 110, 46, 105, 111, 100, 110, 97, 109, 101, 107, 119, 101 , 98, 97, 117, 116, 104, 110, 46, 105, 111, 3, -93, 98, 105, 100, 74, -44, -98, 1, 0, 0, 0, 0, 0, 0、0、100、110、97、109、101、100、117、115、101]

根据长度数据,总字节数应为 405。但我只收到 94 个字节。我调试并分析了代码,我无法找出问题所在。

请帮我继续。提前致谢。

0 投票
0 回答
222 浏览

c# - 如何使用 Newtonsoft.Json.Cbor 将对象序列化为 CBOR

有没有人曾经将对象Newtonsoft.Json.Cbor序列化为数组?将大对象序列化为数组时它的性能如何- 我希望会生成一个。.NETCBORCBORC#LOH

您能否提供您所做的示例代码?

0 投票
1 回答
291 浏览

python - 优化 CBOR 读取函数以将数据传递到 numpy

我正在尝试将 CBOR 文件中的图像数据读入 Numpy 数组。

理想情况下,我正在寻找一种更有效的读取方式,将字节从二进制补码转换为无符号,然后将图像数据读入 numpy 数组。

我尝试了几种不同的方法来转换和读取字节,但无法显着提高速度。

最初我使用 for 循环来转换字节(下面的 1.),然后我使用带模数的 numpy(下面的 2.),然后转到选择性加法(下面的 3.)。

我的全部功能也在下面。

现在需要 20-30 秒来转换字节并返回 Numpy 数组。如果可能的话,我想把它减半。

现在我想出了使用来消除 for 循环。有没有更好的方法?

0 投票
1 回答
361 浏览

cbor - 使用 Zephyr 构建 tinycbor 模块

我正在尝试在 Zephyr 2.1.0 的 zephyr hello_world 应用程序示例中测试 tinycbor 的使用。我已将以下标志添加到 prj.conf 并成功。但是,它似乎没有引入任何 tinycbor 资源,并且任何引用都无法识别。

我的安装是 west,tinycbor 源文件在“$ZEPHYR_BASE/../modules/lib/tinycbor”中可用。如何让 make 系统找到并构建 tinycbor?

prj.conf:

0 投票
2 回答
386 浏览

json - 支持遍历的二进制 JSON 格式

有谁知道一种序列化格式:

  1. 是二进制的,至少相对紧凑,
  2. 可以存储 JSON 样式的数据(不是Protobuf、Thrift 等),
  3. 支持遍历(即你不需要解析整个文档来读取其中的一部分),并且
  4. 支持大文件(例如 30 GB)?

我看过以下内容:

  • CBOR - 不支持遍历
  • MessagePack - 不支持遍历
  • UBJSON - 不支持遍历
  • 微笑 - 不支持遍历

  • BSON -支持遍历!但最大文档大小为 2 GB。

BSON 是如此接近,但最大文件大小对我来说是致命的。有没有可以工作的格式?显然我可以自己写,但是二进制 JSON 格式太多了,肯定有人做出了不错的吗?

编辑: “遍历”我的意思与BSON 作者的意思是一样的——你应该能够找到给定的对象而不必解析整个文件。亚马逊将此称为“稀疏”或“浅层”阅读。

0 投票
1 回答
214 浏览

delphi - 使用来自 Yubico 的 fido2.dll 进行 Webauthn 凭证验证

我开始在 Delphi 中对 yubicos fido2.dll 进行接口,并且能够根据提供的示例对其进行接口。现在我想更进一步,在例如 apache 服务器上使用 dll 来处理凭证创建和断言。

所以..为此,我基本上使用在测试站点https://webauthn.io/上找到的 javascripts

基本上我想模仿一些服务器功能来创建凭证。在网站上可以设置一些属性 - 在我的环境中,它们来自服务器。

目前,我已经与客户端进行了通信以发出凭据初始化 - 服务器响应挑战。查询密钥,浏览器创建凭据并将其发送回服务器。这虽然我对来自服务器的数据有问题,也就是我在解码 attestationObject 部分时遇到问题。

所以这是来自我的服务器的凭证初始化 json:

来自服务器的结果:

这是一个应该验证凭据的控制台程序:(请注意,您需要将上述内容粘贴到文本文件中并将其加载到控制台中)。

cbor和fido2项目可以在 github 上找到

我实际上对返回的 CBOR 编码的 attestationObject 有问题。如果设置了常驻密钥属性,则证明对象只有 63 个字节长 - 并且还有一些字节实际上没有被编码。所以......那里的 cbor 解码要么失败,要么我得到的数据不符合 webauthn 证明对象,该对象应该在这些位置返回凭证 id 和公钥(然后也是 cbor 编码的)。如果驻留密钥属性为假,如上述语句中的情况,则 fido dll 返回错误的身份验证数据。所以......有人知道我做错了什么吗?

它基本上应该如图所示,但它要么在凭证 ID 中间的 63 个字节之后结束,要么在 dll 中失败。

0 投票
2 回答
434 浏览

ios - 在 Swift 中解开 CBOR 解码的数据

我在 Swift 中关注 Struct

然后我创建一个结构的实例:

并使用 CBOR 对其进行编码,得到: [164, 97, 109, 97, 99, 97, 98, 66, 42, 24, 97, 100, 97, 108, 97, 114, 1]

现在我想使用上面的字节数组再次将它解码回 Struct 但在解码时它会产生输出

如何使用https://github.com/myfreeweb/SwiftCBOR使用 PATTERN MATCHING 获得 Struct