예제 #1
0
        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());
        }
예제 #2
0
        /// <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));
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
        }