Я пытаюсь подписать данные с помощью API WebCrypto, но вместо создания частного/открытого ключа и его экспорта в pkcs # 1 или 8 я бы очень хотел использовать пользовательский PKCS # 12 для подписи данных. Я читал спецификацию W3C, но не могу сделать много из этого и не могу найти хороший материал о том, как это сделать. Сейчас я хочу оставить ActiveX и Java Applets в стороне. Есть ли способ настроить следующее:
var buffer = encode(prompt("Please enter your password"));
//TODO:
//implement a prompt for a pfx or cert
return crypto.subtle.importKey("raw", buffer, "PBKDF2", false, usages);
//TODO:
//instead of importing it, ask for the certificate pass to sign data
//with crypto.subtle.sign
Любые указатели?
UPDATE Здесь код, который я работал
<script src="forge.min.js"></script>
<script>
var errorsReportedByVerifier;
errorsReportedByVerifier = checkStorage() && checkBrowserAPIs();
if (!errorsReportedByVerifier){
console.log("adding click event");
document.getElementById('btnPfx').addEventListener('click', handlePFXFile, false);
storeVariables();
getVariables();
}
function handlePFXFile(evnt) {
console.log("handling pfx")
//alert(document.getElementById('pfx').value);
//error happens in 1st line
//error object does not accept property replace
//forge.min.js Line 1, Column: 17823
var p12Der = forge.util.decode64(document.getElementById('pfx').valueOf());
//var pkcs12Asn1 = forge.asn1.fromDer(p12Der);
//var pkcs12 = forge.pkcs12.pkcs12FromAsn1(pkcs12Asn1, false, 'pss');
console.log("pkcs12");
}
</script>