gpt4 book ai didi

javascript - 如何创建类似于 WebAuthN 的 ArrayBuffer 的 JavaScript ArrayBuffer?

转载 作者:行者123 更新时间:2023-11-30 06:21:34 26 4
gpt4 key购买 nike

我目前正在为 WebAuthN 编写概念验证 Web 应用程序(FIDO U2F, FIDO2) 整合。

返回字段cred.rawId的数据类型为ArrayBuffer。在 Chromes 的开发者控制台中,该字段显示如下:

Chromes' developer console view on original cred.rawId data

当我尝试重现这个 ArrayBuffer 时,我得到了这个:

Chromes' developer console view on own rawId implementation

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

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

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 类来自 Nick Galbreaths' Base64 for JavaScript implementation .

当前的 rawId 可能有效,但我想 100% 重现它,以便将它在未来某个浏览器版本的其他浏览器中失败的可能性降至最低。

如何实现Chrome截图中的表现形式?

最佳答案

您能否尝试用以下内容替换该函数:

function StringToByteArray(str) {
return Uint8Array.from(str, c => c.charCodeAt(0));
}

它非常简单,但它在我的一个项目中起到了作用。

关于javascript - 如何创建类似于 WebAuthN 的 ArrayBuffer 的 JavaScript ArrayBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com