Estoy trabajando en una extensión de Chrome para obtener acceso a la lista de certificados en mi navegador (incluido el certificado de clase 3 que compré).
Este es el manifiesto.json
{ "manifest_version": 2, "name": "Coding Train Extension 2", "version": "0.001", "permissions": ["storage", "activeTab", "scripting"], "content_scripts": [ { "matches":["<all_urls>"], "js": ["content.js"] } ], "background":{ "scripts": ["background.js"] }, "browser_action":{ "default_icon": "logo.png" } }Este es el fondo.js
console.log("This is inside background..."); chrome.browserAction.onClicked.addListener(collectAvailableCertificates); function collectAvailableCertificates() { // Return all certificates that this Extension can currently provide. // For example: return [{ certificateChain: [new Uint8Array()], supportedAlgorithms: ['RSASSA_PKCS1_v1_5_SHA256'] }]; }En esta prueba, content.js no se usa mucho. Tengo un icono de la extensión en el navegador y, al hacer clic, estoy activando background.js. Estoy tratando de emular las API proporcionadas en la documentación de la API de Chrome https://developer.chrome.com/docs/extensions/reference/certificateProvider/
Lo que busco es cómo llamar a los métodos como collectAvailableCertificates(), handleSignatureRequest(request) como se ve en el documento. Mi objetivo es usar este certificado comprado para firmar digitalmente una carga xml.
La API certificateProvider tiene un objetivo completamente diferente en mente.
Solo está disponible para Chrome OS como una forma de administrar la autenticación de certificados para solicitudes web , y no para ningún otro uso de certificados (parece que apunta a firmar una carga útil arbitraria en su código).
Tampoco proporciona ninguna criptografía requerida para usar un certificado para firmar, eso está fuera de su alcance (de hecho, se espera que la extensión que lo usa implemente las firmas por sí misma), ni le dará acceso al almacén de certificados del sistema operativo si su certificado es almacenado allí.
Toda esta API hace que el navegador sepa qué certificados están disponibles (por la extensión) cuando un servidor web solicita la autenticación de certificado de cliente HTTPS.
Nada menos, nada más. Algunas API de Chrome existen solo para funciones de administración en Chrome OS donde otras interfaces no están disponibles.
La información sobre la restricción de Chrome OS estuvo disponible en el sitio web de documentación hasta octubre de 2021 , pero no parece reflejarse en el actual, que es un error del sitio web de documentación . Y no es que se haya extendido para que funcione en otros lugares; eso se mencionaría en la página Novedades , pero nuevamente confirma en octubre de 2021 que es una "API de Chrome OS" y no tiene menciones desde entonces.
En su lugar, debería mirar las API criptográficas web, por ejemplo, SubtleCrypto.sign , pero eso significaría incluir su clave privada en la extensión misma.
EDITAR: En realidad, Chrome tiene otra API relacionada, chrome.platformKeys , que puede permitir el acceso al almacén de certificados del sistema operativo (si esa es su situación, necesita usar un certificado instalado sin incluirlo en la extensión).
Se puede usar para solicitar la clave pública/privada de la tienda del sistema operativo y luego usar su propia versión de SubtleCrypto para trabajar con ellos.