Ejemplo n.º 1
0
        /// <summary>Delegate method invoked by rcReadKeyFile.</summary>
        private void ExecuteReadKeyFile()
        {
            byte[] abKeyBytes = null;
            long kFileSize;
            string sErrorMessage;
            PgpFile KeyFile;
            PgpToken NewToken = null;

            if (isExecuteReadKeyFile)
            {
                KeyFile = new PgpFile();
                kFileSize = KeyFile.GetFileSize(_sInputKeyFilePath);

                if (kFileSize > PgpFile.ckMaxKeyFileSize)
                {
                    sErrorMessage = string.Format(sKeyFileTooLarge, _sInputKeyFilePath);
                }
                else
                {
                    abKeyBytes = KeyFile.GetBytes(_sInputKeyFilePath, true);

                    switch (KeyFile.eStatus)
                    {
                        case PgpArmor.nStatus.CrcError: sErrorMessage = string.Format(sFileCrcError, _sInputKeyFilePath); break;
                        case PgpArmor.nStatus.ParseError: sErrorMessage = string.Format(sFileParseError, _sInputKeyFilePath); break;
                        case PgpArmor.nStatus.Undefined: sErrorMessage = string.Format(sFileError, _sInputKeyFilePath); break;
                        default: sErrorMessage = string.Empty; break;
                    }
                }

                if (string.IsNullOrEmpty(sErrorMessage))
                {
                    NewToken = new PgpToken(abKeyBytes, _ltTokens, _Cryptography);

                    switch (NewToken.eStatus)
                    {
                        case PgpToken.nStatus.ParseErrorRaw: sErrorMessage = string.Format(sFileParseError, _sInputKeyFilePath); break;
                        case PgpToken.nStatus.ParseErrorSub: sErrorMessage = string.Format(sFileParseErrorSub, _sInputKeyFilePath); break;
                        case PgpToken.nStatus.Undefined: sErrorMessage = string.Format(sFileError, _sInputKeyFilePath); break;
                        default: sErrorMessage = string.Empty; break;
                    }
                }

                if (string.IsNullOrEmpty(sErrorMessage))
                {
                    if (NewToken != null)   // just to be sure, but this should always be true 
                    {
                        if (_ltTokens.Contains(NewToken))
                        {
                            _blMessages.Add(new Property(DateTime.Now, sDuplicateTokenError));
                            eMenuTab = nMenuTab.Progress;
                        }
                        else
                        {
                            _ltTokens.Add(NewToken);
                            RequeryDisplayedTokens();
                            sInputKeyFilePath = string.Empty;
                        }
                    }
                }
                else
                {
                    _blMessages.Add(new Property(DateTime.Now, sErrorMessage));
                    eMenuTab = nMenuTab.Progress;
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>Delegate method invoked by rcReadMessage.</summary>
        protected void ExecuteReadMessage()
        {
            byte[] abMessageBytes;
            string sErrorMessage, sMatchedKeyMessage;
            PgpFile MessageFile;
            PgpMessage NewMessage = null;
            BytesAndTextUtility BytesAndText;

            if (isExecuteReadMessage)
            {
                MessageFile = new PgpFile();
                abMessageBytes = MessageFile.GetBytes(_sInputMessageFilePath, false);

                switch (MessageFile.eStatus)
                {
                    case PgpArmor.nStatus.CrcError: sErrorMessage = string.Format(sFileCrcError, _sInputKeyFilePath); break;
                    case PgpArmor.nStatus.ParseError: sErrorMessage = string.Format(sFileParseError, _sInputKeyFilePath); break;
                    case PgpArmor.nStatus.Undefined: sErrorMessage = string.Format(sFileError, _sInputKeyFilePath); break;
                    default: sErrorMessage = string.Empty; break;
                }

                if (string.IsNullOrEmpty(sErrorMessage))
                {
                    NewMessage = new PgpMessage(abMessageBytes, _Cryptography);

                    switch (NewMessage.eStatus)
                    {
                        case PgpMessage.nStatus.ParseErrorRaw: sErrorMessage = string.Format(sFileParseError, _sInputMessageFilePath); break;
                        case PgpMessage.nStatus.ParseErrorSub: sErrorMessage = string.Format(sFileParseErrorSub, _sInputMessageFilePath); break;
                        case PgpMessage.nStatus.Undefined: sErrorMessage = string.Format(sFileError, _sInputMessageFilePath); break;
                        default: sErrorMessage = string.Empty; break;
                    }
                }

                if (string.IsNullOrEmpty(sErrorMessage))
                {
                    if (NewMessage != null)   // just to be sure, but this should always be true 
                    {
                        NewMessage.MatchPublicKeys(_ltTokens);
                        BytesAndText = new BytesAndTextUtility();

                        foreach (PgpPublicKeyEncryptedKey WrappedKey in NewMessage.ltPublicKeyEncryptedKeys)
                        {
                            if (WrappedKey.MatchedPublicKey == null)
                            {
                                BytesAndText.abBytes = WrappedKey.abPublicKeyId;
                                sMatchedKeyMessage = string.Format(sPublicKeyNotMatched, BytesAndText.sHexadecimalBytes);
                            }
                            else
                                sMatchedKeyMessage = string.Format(sPublicKeyMatched, WrappedKey.sUserId);

                            _blMessages.Add(new Property(DateTime.Now, sMatchedKeyMessage));
                        }
                    }
                }
                else
                {
                    _blMessages.Add(new Property(DateTime.Now, sErrorMessage));
                    eMenuTab = nMenuTab.Progress;
                }
            }
        }