private static X509Certificate2 SetEcDsaPrivateKey(X509Certificate2 cert, string privateKey) { string[] keyParts = privateKey.Split('-', StringSplitOptions.RemoveEmptyEntries); byte[] keyBytes = Convert.FromBase64String(keyParts[1]); ECDsa eccPrivateKey = ECDsa.Create(); if (eccPrivateKey == null) { throw new PlatformNotSupportedException("Unable to create ECDsa"); } switch (keyParts[0]) { case "BEGIN PRIVATE KEY": eccPrivateKey.ImportPkcs8PrivateKey(keyBytes, out _); break; case "BEGIN EC PRIVATE KEY": eccPrivateKey.ImportECPrivateKey(keyBytes, out _); break; default: throw new ArgumentException("Invalid PrivateKey String", nameof(privateKey)); } return(cert.CopyWithPrivateKey(eccPrivateKey).FixForWindows()); }
/// <summary> /// Imports the ECDSA key from Pkcs8 format /// </summary> /// <param name="bytes">Private key store in the Pkcs8 format</param> /// <returns>The ECDSA key</returns> public static ECParameters ImportPrivateKey(byte[] bytes) { ECDsa ecDsa = ECDsa.Create(ECCurve.CreateFromFriendlyName("secp384r1")); ecDsa.ImportPkcs8PrivateKey(bytes, out var _); return(ecDsa.ExportParameters(true)); }
private static ECDsa CreatePrivateKeyAlgorithm(string keyPath) { try { var key = LoadPrivateKey(keyPath); dsa = ECDsa.Create(); dsa.ImportPkcs8PrivateKey(key, out int _); return(dsa); } catch (Exception ex) { _log.Error(ex); return(null); } }
static string createJwtToken() { var payload = new Dictionary <string, object>() { { "api_version", version }, { "app_id", app_id }, { "aud", app_uri }, { "iat", DateTimeOffset.Now.ToUnixTimeSeconds() }, { "jti", Guid.NewGuid() }, { "access_token", access_token } }; ECDsa key = ECDsa.Create(); key.ImportPkcs8PrivateKey(Convert.FromBase64String(private_key), out _); string token = Jose.JWT.Encode(payload, key, JwsAlgorithm.ES256); return(token); }