JSON 网络密钥的 'ext' 属性 有什么用?
What is the 'ext' property of a JSON web key for?
我正在生成并导出 JSON 网络密钥 (jwk)(参见 RFC 7517) using the browser crypto API with the following code (with thanks to this excellent webCrypto examples page on GitHub):
async function makeKey(){
const key = await window.crypto.subtle.generateKey(
{ name: "AES-CTR", length: 128 },
false,
["encrypt", "decrypt"]
)
return window.crypto.subtle.exportKey("jwk", key)
}
我得到的是一个 JSON 具有许多属性的对象,与 MDN documentation 中的对象非常相似,看起来像这样:
{
alg: "A256CTR",
ext: true,
k: "...", //the actual key, a random string of characters
key_ops: undefined,
kty: "oct"
}
上述所有属性都在上面链接的 RFC 中定义,ext
除外。我查看了许多资源(包括但不限于 MDN 和 RFC),但似乎找不到定义。虽然按照上面的定义一切正常,但我更愿意(特别是像 crypto
这样的东西)知道一切都是为了什么。那么,jwk 的 ext
属性 的目的是什么?
我终于在 w3 webCrypto API documentation 中找到了对此的引用。
它是对 jwk 规范的扩展。 JsonWebKey 字典的第 15 节有以下定义:
dictionary JsonWebKey {
// The following fields are defined in Section 3.1 of JSON Web Key
DOMString kty;
DOMString use;
sequence<DOMString> key_ops;
DOMString alg;
// The following fields are defined in JSON Web Key Parameters Registration
boolean ext;
// The following fields are defined in Section 6 of JSON Web Algorithms
DOMString crv;
DOMString x;
DOMString y;
DOMString d;
DOMString n;
DOMString e;
DOMString p;
DOMString q;
DOMString dp;
DOMString dq;
DOMString qi;
sequence<RsaOtherPrimesInfo> oth;
DOMString k;
};
这导致关于 JSON Web Key Parameters Registration 的部分将其定义为 extractable
的缩写,根据文档其余部分的上下文,指示是否可以导出密钥。
鉴于 jwt 是通过导出它生成的,因此对于由此生成的任何密钥,这将始终为 true
,但是在导入密钥之前将其设置为 false
将阻止它被重新导出.
我正在生成并导出 JSON 网络密钥 (jwk)(参见 RFC 7517) using the browser crypto API with the following code (with thanks to this excellent webCrypto examples page on GitHub):
async function makeKey(){
const key = await window.crypto.subtle.generateKey(
{ name: "AES-CTR", length: 128 },
false,
["encrypt", "decrypt"]
)
return window.crypto.subtle.exportKey("jwk", key)
}
我得到的是一个 JSON 具有许多属性的对象,与 MDN documentation 中的对象非常相似,看起来像这样:
{
alg: "A256CTR",
ext: true,
k: "...", //the actual key, a random string of characters
key_ops: undefined,
kty: "oct"
}
上述所有属性都在上面链接的 RFC 中定义,ext
除外。我查看了许多资源(包括但不限于 MDN 和 RFC),但似乎找不到定义。虽然按照上面的定义一切正常,但我更愿意(特别是像 crypto
这样的东西)知道一切都是为了什么。那么,jwk 的 ext
属性 的目的是什么?
我终于在 w3 webCrypto API documentation 中找到了对此的引用。
它是对 jwk 规范的扩展。 JsonWebKey 字典的第 15 节有以下定义:
dictionary JsonWebKey {
// The following fields are defined in Section 3.1 of JSON Web Key
DOMString kty;
DOMString use;
sequence<DOMString> key_ops;
DOMString alg;
// The following fields are defined in JSON Web Key Parameters Registration
boolean ext;
// The following fields are defined in Section 6 of JSON Web Algorithms
DOMString crv;
DOMString x;
DOMString y;
DOMString d;
DOMString n;
DOMString e;
DOMString p;
DOMString q;
DOMString dp;
DOMString dq;
DOMString qi;
sequence<RsaOtherPrimesInfo> oth;
DOMString k;
};
这导致关于 JSON Web Key Parameters Registration 的部分将其定义为 extractable
的缩写,根据文档其余部分的上下文,指示是否可以导出密钥。
鉴于 jwt 是通过导出它生成的,因此对于由此生成的任何密钥,这将始终为 true
,但是在导入密钥之前将其设置为 false
将阻止它被重新导出.