Пример #1
0
        public static bool TryGetX509(this ScpConfig.Certificate config, string password, out X509Certificate2 x509)
        {
            x509 = null;

            if (config == null || string.IsNullOrEmpty(config.pfxFile))
            {
                return(false);
            }

            var pfxPath = config.pfxFile.Contains("/") || config.pfxFile.Contains("\\") ? config.pfxFile : Path.Combine(ConfigDir, config.pfxFile);

            if (!File.Exists(pfxPath))
            {
                return(false);
            }

            try
            {
                x509 = X509Helper.LoadX509FromFile(pfxPath, password);
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        public static bool TryGetECDsaKeys(this ScpConfig.Certificate config, string password, out byte[] publicKeyRaw, out byte[] privateKeyRaw)
        {
            publicKeyRaw  = null;
            privateKeyRaw = null;

            if (config == null || !config.TryGetX509(password, out X509Certificate2 x509))
            {
                return(false);
            }

            try
            {
                var publicKey = x509.GetECDsaPublicKey() as ECDsaCng;
                if (publicKey == null)
                {
                    return(false);
                }

                var privateKey = x509.GetECDsaPrivateKey() as ECDsaCng;
                if (privateKey == null)
                {
                    return(false);
                }

                publicKeyRaw  = publicKey.ExportPublicKeyRaw();
                privateKeyRaw = privateKey.ExportPrivateKeyRaw();
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }