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); }
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); }