|
@@ -1281,7 +1281,7 @@ static void __fastcall ConvertKey(UnicodeString & FileName, TKeyType Type)
|
|
|
}
|
|
|
}
|
|
|
//---------------------------------------------------------------------------
|
|
|
-static void __fastcall DoVerifyKey(UnicodeString & FileName, bool Convert, bool CanIgnore)
|
|
|
+void DoVerifyKey(UnicodeString & FileName, bool Convert, UnicodeString & Message, TStrings *& MoreMessages, UnicodeString & HelpKeyword)
|
|
|
{
|
|
|
if (!FileName.Trim().IsEmpty())
|
|
|
{
|
|
@@ -1289,10 +1289,9 @@ static void __fastcall DoVerifyKey(UnicodeString & FileName, bool Convert, bool
|
|
|
TKeyType Type = KeyType(FileName);
|
|
|
// reason _wfopen failed
|
|
|
int Error = errno;
|
|
|
- UnicodeString Message;
|
|
|
- UnicodeString HelpKeyword = HELP_LOGIN_KEY_TYPE;
|
|
|
+ HelpKeyword = HELP_LOGIN_KEY_TYPE;
|
|
|
UnicodeString PuttygenPath;
|
|
|
- std::unique_ptr<TStrings> MoreMessages;
|
|
|
+ std::unique_ptr<TStrings> AMoreMessages;
|
|
|
switch (Type)
|
|
|
{
|
|
|
case ktOpenSSHPEM:
|
|
@@ -1306,7 +1305,7 @@ static void __fastcall DoVerifyKey(UnicodeString & FileName, bool Convert, bool
|
|
|
{
|
|
|
Configuration->Usage->Inc(L"PrivateKeyConvertSuggestionsNative");
|
|
|
UnicodeString ConvertMessage = FMTLOAD(KEY_TYPE_CONVERT3, (TypeName, RemoveMainInstructionsTag(Message)));
|
|
|
- Message = UnicodeString();
|
|
|
+ Message = EmptyStr;
|
|
|
if (MoreMessageDialog(ConvertMessage, NULL, qtConfirmation, qaOK | qaCancel, HelpKeyword) == qaOK)
|
|
|
{
|
|
|
ConvertKey(FileName, Type);
|
|
@@ -1325,7 +1324,11 @@ static void __fastcall DoVerifyKey(UnicodeString & FileName, bool Convert, bool
|
|
|
break;
|
|
|
|
|
|
case ktSSH1:
|
|
|
- Message = MainInstructions(LoadStr(KEY_TYPE_SSH1));
|
|
|
+ Message = MainInstructions(FMTLOAD(KEY_TYPE_SSH1, (FileName)));
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ktSSH2:
|
|
|
+ Message = TestKey(Type, FileName);
|
|
|
break;
|
|
|
|
|
|
case ktSSH1Public:
|
|
@@ -1338,7 +1341,7 @@ static void __fastcall DoVerifyKey(UnicodeString & FileName, bool Convert, bool
|
|
|
Message = MainInstructions(FMTLOAD(KEY_TYPE_UNOPENABLE, (FileName)));
|
|
|
if (Error != ERROR_SUCCESS)
|
|
|
{
|
|
|
- MoreMessages.reset(TextToStringList(SysErrorMessageForError(Error)));
|
|
|
+ AMoreMessages.reset(TextToStringList(SysErrorMessageForError(Error)));
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -1350,14 +1353,25 @@ static void __fastcall DoVerifyKey(UnicodeString & FileName, bool Convert, bool
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (!Message.IsEmpty())
|
|
|
+ MoreMessages = AMoreMessages.release();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//---------------------------------------------------------------------------
|
|
|
+static void __fastcall DoVerifyKey(UnicodeString & FileName, bool Convert, bool CanIgnore)
|
|
|
+{
|
|
|
+ TStrings * AMoreMessages;
|
|
|
+ UnicodeString Message;
|
|
|
+ UnicodeString HelpKeyword;
|
|
|
+ DoVerifyKey(FileName, Convert, Message, AMoreMessages, HelpKeyword);
|
|
|
+ std::unique_ptr<TStrings> MoreMessages(AMoreMessages);
|
|
|
+ if (!Message.IsEmpty())
|
|
|
+ {
|
|
|
+ Configuration->Usage->Inc(L"PrivateKeySelectErrors");
|
|
|
+ unsigned int Answers = (CanIgnore ? (qaIgnore | qaAbort) : qaOK);
|
|
|
+ if (MoreMessageDialog(Message, MoreMessages.get(), qtWarning, Answers, HelpKeyword) != qaIgnore)
|
|
|
{
|
|
|
- Configuration->Usage->Inc(L"PrivateKeySelectErrors");
|
|
|
- unsigned int Answers = (CanIgnore ? (qaIgnore | qaAbort) : qaOK);
|
|
|
- if (MoreMessageDialog(Message, MoreMessages.get(), qtWarning, Answers, HelpKeyword) != qaIgnore)
|
|
|
- {
|
|
|
- Abort();
|
|
|
- }
|
|
|
+ Abort();
|
|
|
}
|
|
|
}
|
|
|
}
|