首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建与WebAuthN的JavaScript ArrayBuffer类似的ArrayBuffer?

如何创建与WebAuthN的JavaScript ArrayBuffer类似的ArrayBuffer?
EN

Stack Overflow用户
提问于 2018-10-12 16:33:43
回答 1查看 184关注 0票数 2

我目前正在为WebAuthN (FIDO U2F,FIDO2)集成编写一个概念web应用程序的证明。

返回的字段cred.rawId的数据类型是ArrayBuffer。在Chromes的developer控制台中,此字段如下所示:

当我试图复制这个ArrayBuffer时,我的结果是:

注意“其他表示”(如[[Int8Array]]),它们都是零输出的!此外,我的ArrayBuffer看起来像一个普通的数组,而数据在第一个原始屏幕截图中没有显示(以这种方式)。

这是从存储的PoC修复中检索rawId的源代码(记住: Base64状态):

代码语言:javascript
复制
function StringToByteArray(str) {
  var bytes = new ArrayBuffer();
  for (var i = 0; i < str.length; ++i) {
    var code = str.charCodeAt(i);
    var _bytes = new ArrayBuffer(bytes.byteLength + 1);
    for ( var j = 0; j < bytes.byteLength; j++ ) {
      _bytes[j] = bytes[j];
    }
    _bytes[bytes.byteLength] = code;
    bytes = _bytes
  }
  return bytes;
}

var x_rawId = StringToByteArray(base64.decode(cred.id.replace(/-/g, '+').replace(/_/g, '/').padRight(cred.id.length + (4 - cred.id.length % 4) % 4, '=')));

Base64类来自尼克·加尔布雷斯用于JavaScript实现的JavaScript

当前的rawId可能会工作,但是我想100%地复制它,这样在将来的浏览器版本中,它在其他浏览器中失败的可能性就会降到最低。

如何实现Chrome屏幕截图中显示的表示?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-29 11:42:37

您是否可以尝试用以下方法替换该函数:

代码语言:javascript
复制
function StringToByteArray(str) {
  return Uint8Array.from(str, c => c.charCodeAt(0));
}

这很简单,但它在我的一个项目中起了作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52783656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档