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