Obtuve este código C# pero necesito que se haga en Javascript. La idea es que necesito ejecutar este fragmento de código cuando no hay Internet en el navegador, básicamente, tengo que guardar algunos datos en el almacenamiento local y luego usarlos para ejecutar este método para generar una clave privada.
private static string SignData(string ppath,string ppass) { X509Certificate2 keyStore = new X509Certificate2(ppath, ppass); RSA privateKey = keyStore.GetRSAPrivateKey(); byte[] iicSignature = privateKey.SignData(Encoding.ASCII.GetBytes(pConcat), HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); byte[] iic = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(iicSignature); return BitConverter.ToString(iic).Replace("-", string.Empty); }PD: logré extraer la clave privada y guardarla en el almacenamiento local. Ahora necesito firmar algunos datos con esta clave, el algoritmo SHA256 y el relleno pkcs1.
En primer lugar, use Bouncy Castle para extraer su clave privada del certificado y convertirla a pkcs8.
Luego, deberá encontrar una biblioteca de JavaScript que firme datos con una clave privada. Le sugiero que use la biblioteca window.crypto que es compatible con la mayoría de los navegadores. Tiene un método llamado window.crypto.subtle.sign() que firma datos usando una clave privada que debe importar con window.crypto.subtle.importKey() . Puede leer más aquí sobre esta biblioteca.
Y finalmente, necesitará una biblioteca md5 para codificar los datos firmados. Puedes encontrar eso aquí.
Es sobre todo de lo que has hablado en este chat .