Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        /// <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;
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        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;
 }
Exemplo n.º 9
0
 //状態更新 パスフレーズ入力ダイアログから
 public void SetStatus(PrivateKeyStatus st, SSH2UserAuthKey key)
 {
     _status = st;
     _key    = key;
 }
Exemplo n.º 10
0
        private SSH2UserAuthKey _key; //有効化するまではnull

        public AgentPrivateKey(string filename)
        {
            _filename = filename;
            _status   = PrivateKeyStatus.Initial;
            _key      = null;
        }
Exemplo n.º 11
0
        /// <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);
        }
Exemplo n.º 12
0
 //状態更新 パスフレーズ入力ダイアログから
 public void SetStatus(PrivateKeyStatus st, SSH2UserAuthKey key) {
     _status = st;
     _key = key;
 }
Exemplo n.º 13
0
        private SSH2UserAuthKey _key; //有効化するまではnull

        public AgentPrivateKey(string filename) {
            _filename = filename;
            _status = PrivateKeyStatus.Initial;
            _key = null;
        }
Exemplo n.º 14
0
 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;
 }