Baseline Widely available
å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
extractable
㯠CryptoKey
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®èªã¿åãå°ç¨ããããã£ã§ãSubtleCrypto.exportKey()
ã¾ã㯠SubtleCrypto.wrapKey()
ã使ç¨ãã¦ãã¼ãæ½åºã§ãããã©ããã示ãã¾ãã
ãã¼ãã¨ã¯ã¹ãã¼ãã§ããªãå ´åã¯ã exportKey()
ã wrapKey()
ã§ã¯æ½åºãããã¨ãã¦ä¾å¤ãçºçãã¾ãã
è«çå¤ã§ããã¼ãã¨ã¯ã¹ãã¼ãå¯è½ã§ããã° true
ãä¸å¯è½ã§ããã° false
ã¨ãªãã¾ãã
ãã®ä¾ã§ã¯ããã¼ãã¨ã¯ã¹ãã¼ãã§ããªãå ´åããã¨ã¯ã¹ãã¼ãããã¿ã³ã¯ç¡å¹ã«ãªããå¾ ã¡åããããªã¹ãã¼ã追å ããã¾ããã
// æå®ããããã¼ãã¨ã¯ã¹ãã¼ããã"exported-key" 空éã«æ¸ãè¾¼ã¿ã¾ãã
async function exportCryptoKey(key) {
const exported = await window.crypto.subtle.exportKey("raw", key);
const exportedKeyBuffer = new Uint8Array(exported);
const exportKeyOutput = document.querySelector(".exported-key");
exportKeyOutput.textContent = `[${exportedKeyBuffer}]`;
}
// ãã¼ãæ½åºå¯è½ãã©ããã«ãã£ã¦ãexportButton ãæå¹ã¾ãã¯ç¡å¹ã«ãã¾ãã
function setExportButton(key) {
const exportButton = document.querySelector(".raw");
// ãã¼ãæ½åºã§ããªãå ´åã¯ããã¿ã³ãç¡å¹ã«ãã
exportButton.disabled = !key.extractable;
if (key.extractable) {
// ã¤ãã³ããªã¹ãã¼ã追å ãã¦ãã¼ãæ½åºãã
exportButton.addEventListener("click", () => {
exportCryptoKey(key);
});
}
}
// æå·å/復å·ããç§å¯éµãçæããã
// 次ã«ããã¨ã¯ã¹ãã¼ãããã¿ã³ã§ã¤ãã³ããªã¹ãã¼ãæå¹ã«ããè¨å®ããã
window.crypto.subtle
.generateKey(
{
name: "AES-GCM",
length: 256,
},
true,
["encrypt", "decrypt"],
)
.then(setExportButton(key));
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4