public override bool HasPrivateKey() { if (this.privateKeyStatus == PrivateKeyStatus.AvailabilityNotDetermined) { RSACryptoServiceProvider rsaCryptoServiceProvider = this.rsa as RSACryptoServiceProvider; if (rsaCryptoServiceProvider != null) { this.privateKeyStatus = rsaCryptoServiceProvider.PublicOnly ? PrivateKeyStatus.DoesNotHavePrivateKey : PrivateKeyStatus.HasPrivateKey; } else { try { byte[] hash = new byte[20]; this.rsa.DecryptValue(hash); // imitate signing this.privateKeyStatus = PrivateKeyStatus.HasPrivateKey; } catch (CryptographicException) { this.privateKeyStatus = PrivateKeyStatus.DoesNotHavePrivateKey; } } } return(this.privateKeyStatus == PrivateKeyStatus.HasPrivateKey); }
private bool InternalGuessValidKeyFileOrWarn(IPoderosaForm pf, Form wf) { if (_status == PrivateKeyStatus.OK || _status == PrivateKeyStatus.PassphraseRequired) { return(true); } StringResource sr = SSHUtilPlugin.Instance.Strings; try { if (!File.Exists(_filename)) { Warning(pf, wf, String.Format(sr.GetString("Message.KeyAgent.FileNotExist"), _filename)); _status = PrivateKeyStatus.FileError; return(false); } } catch (Exception ex) { Warning(pf, wf, ex.Message); _status = PrivateKeyStatus.FileError; return(false); } _status = PrivateKeyStatus.PassphraseRequired; return(true); }
public override bool HasPrivateKey() { if (_privateKeyStatus == PrivateKeyStatus.AvailabilityNotDetermined) { if (_rsa is RSACryptoServiceProvider rsaCryptoServiceProvider) { _privateKeyStatus = rsaCryptoServiceProvider.PublicOnly ? PrivateKeyStatus.DoesNotHavePrivateKey : PrivateKeyStatus.HasPrivateKey; } else { try { byte[] hash = new byte[20]; _rsa.DecryptValue(hash); // imitate signing _privateKeyStatus = PrivateKeyStatus.HasPrivateKey; } #pragma warning disable CA1031 // Do not catch general exception types - interpret as no private key, don't need to use exception catch (CryptographicException) { _privateKeyStatus = PrivateKeyStatus.DoesNotHavePrivateKey; } #pragma warning restore CA1031 // Do not catch general exception types } } return _privateKeyStatus == PrivateKeyStatus.HasPrivateKey; }
public AccountKey(string user, string thumbprint, KeyPair keyPair, DateTime timestamp, PrivateKeyStatus status) { User = user ?? throw new ArgumentNullException("user"); Thumbprint = thumbprint ?? throw new ArgumentNullException("thumbprint"); KeyPair = keyPair ?? throw new ArgumentNullException("keyPair"); Timestamp = timestamp; Status = status; }
/// <summary> /// Initializes a new instance of the <see cref="RsaSecurityKey"/> class. /// </summary> /// <param name="rsaParameters"><see cref="RSAParameters"/></param> public RsaSecurityKey(RSAParameters rsaParameters) { // must have modulus and exponent otherwise the crypto operations fail later if (rsaParameters.Modulus == null || rsaParameters.Exponent == null) { throw LogHelper.LogExceptionMessage(new ArgumentException(LogHelper.FormatInvariant(LogMessages.IDX10700, rsaParameters.ToString()))); } _hasPrivateKey = rsaParameters.D != null && rsaParameters.DP != null && rsaParameters.DQ != null && rsaParameters.P != null && rsaParameters.Q != null && rsaParameters.InverseQ != null; _foundPrivateKey = _hasPrivateKey.Value ? PrivateKeyStatus.Exists : PrivateKeyStatus.DoesNotExist; _foundPrivateKeyDetermined = true; Parameters = rsaParameters; }
internal void IntializeWithRsaParameters(RSAParameters rsaParameters) { // must have modulus and exponent otherwise the crypto operations fail later if (rsaParameters.Modulus == null) { throw LogHelper.LogExceptionMessage(new ArgumentException(LogHelper.FormatInvariant(LogMessages.IDX10700, this, "Modulus"))); } if (rsaParameters.Exponent == null) { throw LogHelper.LogExceptionMessage(new ArgumentException(LogHelper.FormatInvariant(LogMessages.IDX10700, this, "Exponent"))); } _hasPrivateKey = rsaParameters.D != null && rsaParameters.DP != null && rsaParameters.DQ != null && rsaParameters.P != null && rsaParameters.Q != null && rsaParameters.InverseQ != null; _foundPrivateKey = _hasPrivateKey.Value ? PrivateKeyStatus.Exists : PrivateKeyStatus.DoesNotExist; _foundPrivateKeyDetermined = true; Parameters = rsaParameters; }
private bool InternalGuessValidKeyFileOrWarn(IPoderosaForm pf, Form wf) { if (_status == PrivateKeyStatus.OK || _status == PrivateKeyStatus.PassphraseRequired) return true; StringResource sr = SSHUtilPlugin.Instance.Strings; try { if (!File.Exists(_filename)) { Warning(pf, wf, String.Format(sr.GetString("Message.KeyAgent.FileNotExist"), _filename)); _status = PrivateKeyStatus.FileError; return false; } } catch (Exception ex) { Warning(pf, wf, ex.Message); _status = PrivateKeyStatus.FileError; return false; } _status = PrivateKeyStatus.PassphraseRequired; return true; }
public CustomRsaSecurityKey(int keySize, PrivateKeyStatus privateKeyStatus, RSAParameters parameters, string InternalId) : base(parameters) { _keySize = keySize; _privateKeyStatus = privateKeyStatus; }
//状態更新 パスフレーズ入力ダイアログから public void SetStatus(PrivateKeyStatus st, SSH2UserAuthKey key) { _status = st; _key = key; }
private SSH2UserAuthKey _key; //有効化するまではnull public AgentPrivateKey(string filename) { _filename = filename; _status = PrivateKeyStatus.Initial; _key = null; }
/// <summary> /// Sets the private key status. /// </summary> /// <param name="status">The status.</param> /// <returns>A new instance with the status set to the provided value.</returns> public AccountKey SetStatus(PrivateKeyStatus status) { AccountKey newKey = new AccountKey(User, Thumbprint, KeyPair, Timestamp, status); return(newKey); }
public override bool HasPrivateKey() { if (this.privateKeyStatus == PrivateKeyStatus.AvailabilityNotDetermined) { RSACryptoServiceProvider rsaCryptoServiceProvider = this.rsa as RSACryptoServiceProvider; if (rsaCryptoServiceProvider != null) { this.privateKeyStatus = rsaCryptoServiceProvider.PublicOnly ? PrivateKeyStatus.DoesNotHavePrivateKey : PrivateKeyStatus.HasPrivateKey; } else { try { byte[] hash = new byte[20]; this.rsa.DecryptValue(hash); // imitate signing this.privateKeyStatus = PrivateKeyStatus.HasPrivateKey; } catch (CryptographicException) { this.privateKeyStatus = PrivateKeyStatus.DoesNotHavePrivateKey; } } } return this.privateKeyStatus == PrivateKeyStatus.HasPrivateKey; }