Compare commits

..

42 Commits

Author SHA1 Message Date
527d4271b1 Version set to 1.2-beta 2017-02-06 08:18:09 +01:00
36f6d04906 Translation update 2017-02-06 08:08:07 +01:00
e8758e9c41 Translation update 2017-02-02 18:17:07 +01:00
058ec398e6 __DANGEROUS__LOG_CONFIDENTIAL_DATA is now 0/1 #defined 2017-02-02 13:57:44 +01:00
5b79f5d849 EAP_INNER_EAPHOST is now 0/1 #defined 2017-02-02 13:57:16 +01:00
6f049d2692 EAP_USE_NATIVE_CREDENTIAL_CACHE is now 0/1 #defined 2017-02-02 13:25:24 +01:00
964bf4032a Doxygen settings updated 2017-02-02 12:39:51 +01:00
87e2296dde Documentation update 2017-02-02 12:17:52 +01:00
6284b6c29e EapHost support in invoke_interactive_ui() added 2017-02-02 11:36:12 +01:00
260b78025c EapHost credential prompt result evaluation fixed 2017-02-02 11:35:41 +01:00
6b81ea51d3 EapHost conditional compilation directive fixed 2017-02-02 11:26:15 +01:00
a07eb48174 EAP-GTC credential prompt fixed 2017-02-02 10:41:50 +01:00
0ec0e3579e EAP-GTC event logging and clean-up 2017-02-02 10:22:43 +01:00
a78901cb63 EAP-GTC challenge/response prompt now functional 2017-02-01 14:36:53 +01:00
27ae8baf3a eap::ui_context_ttls introduced 2017-02-01 14:35:33 +01:00
dd3da2f41a EAP-GTC response panel and dialog finished 2017-02-01 14:33:12 +01:00
6f3aa650b6 Clean-up 2017-02-01 14:32:00 +01:00
191e4abd9c eap::ui_context class for inter-process exchange introduced 2017-02-01 14:23:08 +01:00
386d852859 Clean-up 2017-02-01 13:11:27 +01:00
7977d04281 EapHost peer initialization conditional now 2017-02-01 11:02:41 +01:00
b632f0202f get_ui_context() upgraded 2017-02-01 10:52:57 +01:00
57372b8f95 Simple BLOB encryption/decryption added & comment updates 2017-02-01 10:23:07 +01:00
172cd18c16 Missing namespace added 2017-02-01 09:54:17 +01:00
cfc241d3a6 Initial version of GTC Challenge/Response panel added 2017-01-31 14:58:08 +01:00
4c1d4b0580 Identity and password credential panel icons distinguished 2017-01-31 14:42:36 +01:00
d508a6c398 EAP-GTC implementation continues... 2017-01-31 13:54:55 +01:00
f9083dc300 eap::credentials reverted back to abstract class (25934dd8c7 undone), and eap::credentials_identity introduced, since identity-only credentials must fail when <UserName> absent 2017-01-31 13:54:27 +01:00
0b358acba7 Clean-up 2017-01-31 13:41:08 +01:00
cbe831f9f6 EAP errors now correctly displayed in Event Viewer 2017-01-31 12:36:24 +01:00
d7795ef054 Translation update 2017-01-31 11:12:05 +01:00
9b41c73e9d Incorrect RFC quote removed 2017-01-31 11:03:06 +01:00
e8d231d360 EAP-GTC implementation continues... 2017-01-31 10:40:11 +01:00
f6522b8fa7 wxPasswordCredentialsPanel<> split to wxIdentityCredentialsPanel<> and wxPasswordCredentialsPanel<> to provide support for identity-only credentials (i.e. EAP-GTC). 2017-01-31 10:36:53 +01:00
25934dd8c7 eap::credentials no longer pure virtual to allow identity-only credentials (i.e. EAP-GTC). 2017-01-31 10:33:15 +01:00
4b4578fd59 Both event channels are registered using Makefile disabled now, to prevent Events.dll getting constantly locked by Event Log service. 2017-01-31 10:30:29 +01:00
4ec366b23b "User ID" and "Password" labels vertically centered 2017-01-31 10:04:56 +01:00
4b40c4d217 EAP-GTC work continues... 2017-01-30 14:49:27 +01:00
a2a87ddc4c Additional clarification of UI context handling 2017-01-30 14:49:09 +01:00
bd73ea7914 EAP-GTC implementation started 2017-01-30 13:42:51 +01:00
5fada1b6a9 Comment fixed 2017-01-30 12:41:53 +01:00
5f28fc873c EAP types look-up extended 2017-01-30 12:14:19 +01:00
2cb9453209 Version set to 1.2-alpha 2017-01-30 09:09:11 +01:00
57 changed files with 3526 additions and 116 deletions

View File

@@ -794,6 +794,7 @@ EXCLUDE = \
EventMonitor\res \ EventMonitor\res \
lib\EAPBase_UI\res \ lib\EAPBase_UI\res \
lib\EapHost_UI\res \ lib\EapHost_UI\res \
lib\GTC_UI\res \
lib\TLS_UI\res \ lib\TLS_UI\res \
lib\TTLS_UI\res \ lib\TTLS_UI\res \
lib\WinStd \ lib\WinStd \

View File

@@ -103,6 +103,9 @@
<ProjectReference Include="..\..\lib\Events\build\Events.vcxproj"> <ProjectReference Include="..\..\lib\Events\build\Events.vcxproj">
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project> <Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\..\lib\GTC\build\GTC.vcxproj">
<Project>{114a70bb-8698-4a0c-8c90-58f22edd8129}</Project>
</ProjectReference>
<ProjectReference Include="..\..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj"> <ProjectReference Include="..\..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj">
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project> <Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
</ProjectReference> </ProjectReference>

View File

@@ -109,6 +109,12 @@
<ProjectReference Include="..\..\lib\Events\build\Events.vcxproj"> <ProjectReference Include="..\..\lib\Events\build\Events.vcxproj">
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project> <Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\..\lib\GTC\build\GTC.vcxproj">
<Project>{114a70bb-8698-4a0c-8c90-58f22edd8129}</Project>
</ProjectReference>
<ProjectReference Include="..\..\lib\GTC_UI\build\GTC_UI.vcxproj">
<Project>{34680813-3a52-46fb-b5a8-1e4bbf770855}</Project>
</ProjectReference>
<ProjectReference Include="..\..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj"> <ProjectReference Include="..\..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj">
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project> <Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
</ProjectReference> </ProjectReference>

View File

@@ -2,7 +2,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: EAPMethods\n" "Project-Id-Version: EAPMethods\n"
"POT-Creation-Date: 2016-12-07 13:55+0100\n" "POT-Creation-Date: 2017-02-02 18:14+0100\n"
"PO-Revision-Date: 2016-06-02 12:27+0200\n" "PO-Revision-Date: 2016-06-02 12:27+0200\n"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n" "Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n" "Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
@@ -15,68 +15,87 @@ msgstr ""
"X-Poedit-KeywordsList: _\n" "X-Poedit-KeywordsList: _\n"
"X-Poedit-SearchPath-0: master/lib/EAPBase_UI\n" "X-Poedit-SearchPath-0: master/lib/EAPBase_UI\n"
"X-Poedit-SearchPath-1: master/lib/EapHost_UI\n" "X-Poedit-SearchPath-1: master/lib/EapHost_UI\n"
"X-Poedit-SearchPath-2: master/lib/MSCHAPv2_UI\n" "X-Poedit-SearchPath-2: master/lib/GTC_UI\n"
"X-Poedit-SearchPath-3: master/lib/PAP_UI\n" "X-Poedit-SearchPath-3: master/lib/MSCHAPv2_UI\n"
"X-Poedit-SearchPath-4: master/lib/TLS_UI\n" "X-Poedit-SearchPath-4: master/lib/PAP_UI\n"
"X-Poedit-SearchPath-5: master/lib/TTLS_UI\n" "X-Poedit-SearchPath-5: master/lib/TLS_UI\n"
"X-Poedit-SearchPath-6: master/EAPMethods\n" "X-Poedit-SearchPath-6: master/lib/TTLS_UI\n"
"X-Poedit-SearchPath-7: ver1.0/lib/EAPBase_UI\n" "X-Poedit-SearchPath-7: master/EAPMethods\n"
"X-Poedit-SearchPath-8: ver1.0/lib/MSCHAPv2_UI\n" "X-Poedit-SearchPath-8: ver1.1/lib/EAPBase_UI\n"
"X-Poedit-SearchPath-9: ver1.0/lib/PAP_UI\n" "X-Poedit-SearchPath-9: ver1.1/lib/EapHost_UI\n"
"X-Poedit-SearchPath-10: ver1.0/lib/TLS_UI\n" "X-Poedit-SearchPath-10: ver1.1/lib/MSCHAPv2_UI\n"
"X-Poedit-SearchPath-11: ver1.0/lib/TTLS_UI\n" "X-Poedit-SearchPath-11: ver1.1/lib/PAP_UI\n"
"X-Poedit-SearchPath-12: ver1.0/EAPMethods\n" "X-Poedit-SearchPath-12: ver1.1/lib/TLS_UI\n"
"X-Poedit-SearchPath-13: ver1.1/lib/TTLS_UI\n"
"X-Poedit-SearchPath-14: ver1.1/EAPMethods\n"
"X-Poedit-SearchPath-15: ver1.0/lib/EAPBase_UI\n"
"X-Poedit-SearchPath-16: ver1.0/lib/MSCHAPv2_UI\n"
"X-Poedit-SearchPath-17: ver1.0/lib/PAP_UI\n"
"X-Poedit-SearchPath-18: ver1.0/lib/TLS_UI\n"
"X-Poedit-SearchPath-19: ver1.0/lib/TTLS_UI\n"
"X-Poedit-SearchPath-20: ver1.0/EAPMethods\n"
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:37 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:37
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:37 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:37
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:37
msgid "+" msgid "+"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:38 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:38
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:38 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:38
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:38
msgid "Adds new provider" msgid "Adds new provider"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:42 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:42
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:42 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:42
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:42
msgid "-" msgid "-"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:43 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:43
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:43 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:43
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:43
msgid "Removes selected provider" msgid "Removes selected provider"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:47 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:47
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:47 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:47
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:47
msgid "Advanced..." msgid "Advanced..."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:48 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:48
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:48 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:48
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:48
msgid "Opens dialog with provider settings" msgid "Opens dialog with provider settings"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:229 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:229
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:229 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:229
#: master/lib/EAPBase_UI/include/EAP_UI.h:665 #: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:229
#: master/lib/EAPBase_UI/include/EAP_UI.h:666
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:605 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:605
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:665
#, c-format #, c-format
msgid "%s User Credentials" msgid "%s User Credentials"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:240 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:240
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:240 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:240
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:240
msgid "Select the source where your credentials used to connect are stored." msgid "Select the source where your credentials used to connect are stored."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:244 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:244
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:244 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:244
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:244
msgid "Use credentials from Credential &Manager" msgid "Use credentials from Credential &Manager"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:245 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:245
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:245 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:245
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:245
msgid "Select this option if you would like to use credentials stored in Windows Credential Manager" msgid "Select this option if you would like to use credentials stored in Windows Credential Manager"
msgstr "" msgstr ""
@@ -84,21 +103,26 @@ msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:299 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:299
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:255 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:255
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:299 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:299
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:255
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:299
msgid "Identity:" msgid "Identity:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:262 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:262
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:262 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:262
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:262
msgid "Your present credentials stored in Windows Credential Manager" msgid "Your present credentials stored in Windows Credential Manager"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:272 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:272
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:272 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:272
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:272
msgid "&Clear Credentials" msgid "&Clear Credentials"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:273 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:273
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:273 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:273
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:273
msgid "" msgid ""
"Click to clear your credentials from Credential Manager.\n" "Click to clear your credentials from Credential Manager.\n"
"Note: You will be prompted to enter credentials when connecting." "Note: You will be prompted to enter credentials when connecting."
@@ -108,6 +132,8 @@ msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:316 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:316
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:277 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:277
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:316 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:316
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:277
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:316
msgid "&Set Credentials..." msgid "&Set Credentials..."
msgstr "" msgstr ""
@@ -115,576 +141,746 @@ msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:317 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:317
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:278 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:278
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:317 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:317
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:278
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:317
msgid "Click here to set or modify your credentials" msgid "Click here to set or modify your credentials"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:288 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:288
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:288 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:288
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:288
msgid "Use credentials from &profile configuration" msgid "Use credentials from &profile configuration"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:289 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:289
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:289 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:289
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:289
msgid "Select this option if you would like to store credentials as a part of profile configuration" msgid "Select this option if you would like to store credentials as a part of profile configuration"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:306 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:306
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:306 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:306
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:306
msgid "Profile configuration credentials" msgid "Profile configuration credentials"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:359 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:359
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:359 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:359
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:359
msgid "User ID and Password" msgid "User ID and Password"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:369 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:369
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:369 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:369
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:369
msgid "Please provide your user ID and password." msgid "Please provide your user ID and password."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:379 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:379
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:443
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:379 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:379
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:379
msgid "User ID:" msgid "User ID:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:384 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:384
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:448
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:384 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:384
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:384
msgid "Enter your user name here (user@domain.org, DOMAIN\\User, etc.)" msgid "Enter your user name here (user@domain.org, DOMAIN\\User, etc.)"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:388 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:388
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:388 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:388
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:388
msgid "Password:" msgid "Password:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:393 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:393
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:393 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:393
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:393
msgid "Enter your password here" msgid "Enter your password here"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:424 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:423
msgid "User ID"
msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:433
msgid "Please provide your user ID."
msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:473
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:424 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:424
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:424
msgid "Your Organization" msgid "Your Organization"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:435 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:484
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:435 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:435
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:435
msgid "Describe your organization to customize user prompts. When organization is introduced, end-users find program messages easier to understand and act." msgid "Describe your organization to customize user prompts. When organization is introduced, end-users find program messages easier to understand and act."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:442 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:491
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:442 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:442
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:442
msgid "Your organization &name:" msgid "Your organization &name:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:447 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:496
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:447 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:447
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:447
msgid "Your organization name as it will appear on helpdesk contact notifications" msgid "Your organization name as it will appear on helpdesk contact notifications"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:451 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:500
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:451 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:451
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:451
msgid "(Keep it short, please)" msgid "(Keep it short, please)"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:461 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:510
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:461 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:461
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:461
msgid "Helpdesk contact &information:" msgid "Helpdesk contact &information:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:471 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:520
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:471 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:471
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:471
msgid "¶" msgid "¶"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:478 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:527
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:478 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:478
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:478
msgid "Your helpdesk website address" msgid "Your helpdesk website address"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:482 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:531
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:482 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:482
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:482
msgid "*" msgid "*"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:489 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:538
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:489 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:489
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:489
msgid "Your helpdesk e-mail address" msgid "Your helpdesk e-mail address"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:493 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:542
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:493 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:493
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:493
msgid ")" msgid ")"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:500 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:549
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:500 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:500
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:500
msgid "Your helpdesk phone number" msgid "Your helpdesk phone number"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:528 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:577
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:528 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:528
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:528
msgid "Provider Unique Identifier" msgid "Provider Unique Identifier"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:539 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:588
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:539 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:539
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:539
msgid "Assign your organization a unique ID to allow sharing the same credential set across different network profiles." msgid "Assign your organization a unique ID to allow sharing the same credential set across different network profiles."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:546 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:595
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:546 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:546
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:546
msgid "&Namespace:" msgid "&Namespace:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:550 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:599
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:550 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:550
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:550
msgid "urn:RFC4282:realm" msgid "urn:RFC4282:realm"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:550 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:599
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:550 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:550
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:550
msgid "urn:uuid" msgid "urn:uuid"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:562 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:611
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:562 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:562
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:562
msgid "Provider unique &identifier:" msgid "Provider unique &identifier:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:567 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:616
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:567 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:567
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:567
msgid "Your organization ID to assign same credentials from other profiles" msgid "Your organization ID to assign same credentials from other profiles"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:592 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:641
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:592 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:592
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:592
msgid "Configuration Lock" msgid "Configuration Lock"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:603 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:652
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:603 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:603
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:603
msgid "Your configuration can be locked to prevent accidental modification by end-users. Users will only be allowed to enter credentials." msgid "Your configuration can be locked to prevent accidental modification by end-users. Users will only be allowed to enter credentials."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:610 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:659
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:610 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:610
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:610
msgid "&Lock this configuration and prevent any further modification via user interface." msgid "&Lock this configuration and prevent any further modification via user interface."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:613 #: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:662
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:613 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:613
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:613
msgid "(Warning: Once locked, you can not revert using this dialog!)" msgid "(Warning: Once locked, you can not revert using this dialog!)"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:103 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:103
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:99 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:99
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:103
#, c-format #, c-format
msgid "%s Credentials" msgid "%s Credentials"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:139 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:139
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:173 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:173
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:139
#, c-format #, c-format
msgid "For additional help and instructions, please contact %s at:" msgid "For additional help and instructions, please contact %s at:"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:140 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:140
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:174 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:174
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:140
msgid "your provider" msgid "your provider"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:159 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:159
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:193 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:193
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:159
msgid "Open the default web browser" msgid "Open the default web browser"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:170 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:170
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:204 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:204
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:170
msgid "Open your e-mail program" msgid "Open your e-mail program"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:181 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:181
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:215 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:215
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:181
msgid "Dial the phone number" msgid "Dial the phone number"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:203 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:203
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:235 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:235
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:203
#, c-format #, c-format
msgid "%s has pre-set parts of this configuration. Those parts are locked to prevent accidental modification." msgid "%s has pre-set parts of this configuration. Those parts are locked to prevent accidental modification."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:204 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:204
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:236 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:236
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:204
msgid "Your provider" msgid "Your provider"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:225 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:225
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:257 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:257
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:225
msgid "Previous attempt to connect reported invalid credentials." msgid "Previous attempt to connect reported invalid credentials."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:226 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:226
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:258 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:258
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:226
msgid "Previous attempt to connect reported your credentials expired." msgid "Previous attempt to connect reported your credentials expired."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:227 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:227
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:259 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:259
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:227
msgid "Previous attempt to connect reported your credentials are being changed." msgid "Previous attempt to connect reported your credentials are being changed."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:228 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:228
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:260 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:260
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:228
msgid "Previous attempt to connect failed." msgid "Previous attempt to connect failed."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:229 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:229
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:261 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:261
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:229
msgid "Please, make sure your credentials are correct, or try again later." msgid "Please, make sure your credentials are correct, or try again later."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:250 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:250
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:282 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:282
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:250
#, c-format #, c-format
msgid "The %s version installed on this computer logs credentials in visible and easy to read way." msgid "The %s version installed on this computer logs credentials in visible and easy to read way."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/src/EAP_UI.cpp:251 #: master/lib/EAPBase_UI/src/EAP_UI.cpp:251
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:283 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:283
#: ver1.1/lib/EAPBase_UI/src/EAP_UI.cpp:251
msgid "Please, reconsider necessity to enter your credentials." msgid "Please, reconsider necessity to enter your credentials."
msgstr "" msgstr ""
#: master/lib/EapHost_UI/res/wxEapHost_UI.cpp:17 #: master/lib/EapHost_UI/res/wxEapHost_UI.cpp:17
#: ver1.1/lib/EapHost_UI/res/wxEapHost_UI.cpp:17
msgid "Inner EAP Method" msgid "Inner EAP Method"
msgstr "" msgstr ""
#: master/lib/EapHost_UI/res/wxEapHost_UI.cpp:28 #: master/lib/EapHost_UI/res/wxEapHost_UI.cpp:28
#: ver1.1/lib/EapHost_UI/res/wxEapHost_UI.cpp:28
msgid "Select and configure inner EAP method" msgid "Select and configure inner EAP method"
msgstr "" msgstr ""
#: master/lib/EapHost_UI/res/wxEapHost_UI.cpp:40 #: master/lib/EapHost_UI/res/wxEapHost_UI.cpp:40
#: ver1.1/lib/EapHost_UI/res/wxEapHost_UI.cpp:40
msgid "&Settings" msgid "&Settings"
msgstr "" msgstr ""
#: master/lib/EapHost_UI/src/EapHost_UI.cpp:59 #: master/lib/EapHost_UI/src/EapHost_UI.cpp:59
#: ver1.1/lib/EapHost_UI/src/EapHost_UI.cpp:59
#, c-format #, c-format
msgid "Enumerating EAP methods failed (error %u, %s, %s)." msgid "Enumerating EAP methods failed (error %u, %s, %s)."
msgstr "" msgstr ""
#: master/lib/EapHost_UI/src/EapHost_UI.cpp:61 #: master/lib/EapHost_UI/src/EapHost_UI.cpp:61
#: ver1.1/lib/EapHost_UI/src/EapHost_UI.cpp:61
#, c-format #, c-format
msgid "Enumerating EAP methods failed (error %u)." msgid "Enumerating EAP methods failed (error %u)."
msgstr "" msgstr ""
#: master/lib/EapHost_UI/src/EapHost_UI.cpp:136 #: master/lib/EapHost_UI/src/EapHost_UI.cpp:136
#: ver1.1/lib/EapHost_UI/src/EapHost_UI.cpp:136
#, c-format #, c-format
msgid "Configuring EAP method failed (error %u, %s, %s)." msgid "Configuring EAP method failed (error %u, %s, %s)."
msgstr "" msgstr ""
#: master/lib/EapHost_UI/src/EapHost_UI.cpp:138 #: master/lib/EapHost_UI/src/EapHost_UI.cpp:138
#: ver1.1/lib/EapHost_UI/src/EapHost_UI.cpp:138
#, c-format #, c-format
msgid "Configuring EAP method failed (error %u)." msgid "Configuring EAP method failed (error %u)."
msgstr "" msgstr ""
#: master/lib/GTC_UI/res/wxGTC_UI.cpp:16 master/lib/GTC_UI/include/GTC_UI.h:93
msgid "GTC Challenge"
msgstr ""
#: master/lib/GTC_UI/res/wxGTC_UI.cpp:26
msgid "Please provide your response."
msgstr ""
#: master/lib/GTC_UI/res/wxGTC_UI.cpp:38
msgid "Server challenge"
msgstr ""
#: master/lib/GTC_UI/res/wxGTC_UI.cpp:43
msgid "Enter your response here"
msgstr ""
#: master/lib/GTC_UI/src/GTC_UI.cpp:33
msgid "GTC User ID"
msgstr ""
#: master/lib/GTC_UI/src/GTC_UI.cpp:69
#, c-format
msgid "%s Challenge"
msgstr ""
#: master/lib/MSCHAPv2_UI/src/MSCHAPv2_UI.cpp:33 #: master/lib/MSCHAPv2_UI/src/MSCHAPv2_UI.cpp:33
#: ver1.0/lib/MSCHAPv2_UI/src/MSCHAPv2_UI.cpp:33 #: ver1.0/lib/MSCHAPv2_UI/src/MSCHAPv2_UI.cpp:33
#: ver1.1/lib/MSCHAPv2_UI/src/MSCHAPv2_UI.cpp:33
msgid "MSCHAPv2 User ID and Password" msgid "MSCHAPv2 User ID and Password"
msgstr "" msgstr ""
#: master/lib/PAP_UI/src/PAP_UI.cpp:33 ver1.0/lib/PAP_UI/src/PAP_UI.cpp:33 #: master/lib/PAP_UI/src/PAP_UI.cpp:33 ver1.0/lib/PAP_UI/src/PAP_UI.cpp:33
#: ver1.1/lib/PAP_UI/src/PAP_UI.cpp:33
msgid "PAP User ID and Password" msgid "PAP User ID and Password"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:17 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:17 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:17 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:17
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:17
msgid "Server Trust" msgid "Server Trust"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:28 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:28 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:28 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:28
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:28
msgid "Describe the servers you trust to prevent credential interception in case of man-in-the-middle attacks." msgid "Describe the servers you trust to prevent credential interception in case of man-in-the-middle attacks."
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:35 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:35 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:35 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:35
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:35
msgid "Acceptable Certificate Authorities:" msgid "Acceptable Certificate Authorities:"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:40 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:40 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:40 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:40
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:40
msgid "Server's certificate must be issued by one of certificate authorities listed here" msgid "Server's certificate must be issued by one of certificate authorities listed here"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:47 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:47 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:47 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:47
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:47
msgid "Add CA from Store..." msgid "Add CA from Store..."
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:48 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:48 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:48 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:48
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:48
msgid "Adds a new certificate authority from the certificate store to the list" msgid "Adds a new certificate authority from the certificate store to the list"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:52 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:52 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:52 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:52
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:52
msgid "Add CA from File..." msgid "Add CA from File..."
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:53 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:53 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:53 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:53
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:53
msgid "Adds a new certificate authority from the file to the list" msgid "Adds a new certificate authority from the file to the list"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:57 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:57 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:57 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:57
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:57
msgid "&Remove CA" msgid "&Remove CA"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:59 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:59 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:59 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:59
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:59
msgid "Removes selected certificate authorities from the list" msgid "Removes selected certificate authorities from the list"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:72 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:72 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:72 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:72
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:72
msgid "Acceptable server &names:" msgid "Acceptable server &names:"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:77 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:77 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:77 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:77
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:77
msgid "A semicolon delimited list of acceptable server FQDN names; blank to skip name check; Unicode characters allowed" msgid "A semicolon delimited list of acceptable server FQDN names; blank to skip name check; Unicode characters allowed"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:81 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:81 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:81 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:81
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:81
msgid "(Example: foo.bar.com;server2.bar.com)" msgid "(Example: foo.bar.com;server2.bar.com)"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:119 master/lib/TLS_UI/src/TLS_UI.cpp:325 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:119 master/lib/TLS_UI/src/TLS_UI.cpp:325
#: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:119 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:317 #: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:119 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:317
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:119 ver1.1/lib/TLS_UI/src/TLS_UI.cpp:325
msgid "User Certificate" msgid "User Certificate"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:129 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:129
#: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:129 #: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:129
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:129
msgid "Please select your &certificate to use for authentication." msgid "Please select your &certificate to use for authentication."
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:136 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:136
#: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:136 #: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:136
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:136
msgid "Client certificate to use for authentication" msgid "Client certificate to use for authentication"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:143 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:143
#: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:143 #: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:143
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:143
msgid "Custom &identity:" msgid "Custom &identity:"
msgstr "" msgstr ""
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:148 #: master/lib/TLS_UI/res/wxTLS_UI.cpp:148
#: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:148 #: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:148
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:148
msgid "Your identity (username@domain) to override one from certificate; or blank to use one provided in certificate" msgid "Your identity (username@domain) to override one from certificate; or blank to use one provided in certificate"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:61 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:59 #: master/lib/TLS_UI/src/TLS_UI.cpp:61 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:59
#: master/lib/EAPBase_UI/include/EAP_UI.h:861 #: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:61
#: master/lib/EAPBase_UI/include/EAP_UI.h:870 #: master/lib/EAPBase_UI/include/EAP_UI.h:862
#: master/lib/EAPBase_UI/include/EAP_UI.h:871
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:803 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:803
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:812 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:812
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:861
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:870
msgid "<empty>" msgid "<empty>"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:252 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:246 #: master/lib/TLS_UI/src/TLS_UI.cpp:252 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:246
#: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:252
msgid "Add Certificate" msgid "Add Certificate"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:253 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:247 #: master/lib/TLS_UI/src/TLS_UI.cpp:253 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:247
#: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:253
msgid "Certificate Files (*.cer;*.crt;*.der;*.p7b;*.pem)" msgid "Certificate Files (*.cer;*.crt;*.der;*.p7b;*.pem)"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:254 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:248 #: master/lib/TLS_UI/src/TLS_UI.cpp:254 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:248
#: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:254
msgid "X.509 Certificate Files (*.cer;*.crt;*.der;*.pem)" msgid "X.509 Certificate Files (*.cer;*.crt;*.der;*.pem)"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:255 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:249 #: master/lib/TLS_UI/src/TLS_UI.cpp:255 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:249
#: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:255
msgid "PKCS #7 Certificate Files (*.p7b)" msgid "PKCS #7 Certificate Files (*.p7b)"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:256 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:250 #: master/lib/TLS_UI/src/TLS_UI.cpp:256 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:250
#: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:256
msgid "All Files (*.*)" msgid "All Files (*.*)"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:270 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:264 #: master/lib/TLS_UI/src/TLS_UI.cpp:270 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:264
#: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:270
#, c-format #, c-format
msgid "Invalid or unsupported certificate file %s" msgid "Invalid or unsupported certificate file %s"
msgstr "" msgstr ""
#: master/lib/TLS_UI/src/TLS_UI.cpp:270 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:264 #: master/lib/TLS_UI/src/TLS_UI.cpp:270 ver1.0/lib/TLS_UI/src/TLS_UI.cpp:264
#: ver1.1/lib/TLS_UI/src/TLS_UI.cpp:270
msgid "Error" msgid "Error"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:17 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:17
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:17 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:17
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:17
msgid "Outer Identity" msgid "Outer Identity"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:28 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:28
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:28 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:28
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:28
msgid "Select the user ID supplicant introduces itself as to authenticator:" msgid "Select the user ID supplicant introduces itself as to authenticator:"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:35 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:35
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:35 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:35
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:35
msgid "&True identity" msgid "&True identity"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:36 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:36
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:36 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:36
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:36
msgid "Use my true user name" msgid "Use my true user name"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:40 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:40
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:40 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:40
msgid "Use &empty outer identity (RFC 4822)" #: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:40
msgid "Use &empty outer identity"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:41
msgid "Ommit my user name and use @mydomain.org only" msgid "Ommit my user name and use @mydomain.org only"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:48 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
msgid "&Custom outer identity:" msgid "&Custom outer identity:"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:49 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:49
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:49 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:49
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:49
msgid "Specify custom outer identity" msgid "Specify custom outer identity"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:54 #: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:54
#: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:54 #: ver1.0/lib/TTLS_UI/res/wxTTLS_UI.cpp:54
#: ver1.1/lib/TTLS_UI/res/wxTTLS_UI.cpp:54
msgid "Custom outer identity to use" msgid "Custom outer identity to use"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/Module.cpp:262 master/lib/TTLS_UI/src/Module.cpp:318 #: master/lib/TTLS_UI/src/Module.cpp:262 master/lib/TTLS_UI/src/Module.cpp:319
#: ver1.0/lib/TTLS_UI/src/Module.cpp:274 ver1.0/lib/TTLS_UI/src/Module.cpp:284 #: ver1.0/lib/TTLS_UI/src/Module.cpp:274 ver1.0/lib/TTLS_UI/src/Module.cpp:284
#: master/lib/EAPBase_UI/include/EAP_UI.h:784 #: ver1.1/lib/TTLS_UI/src/Module.cpp:262 ver1.1/lib/TTLS_UI/src/Module.cpp:318
#: master/lib/EAPBase_UI/include/EAP_UI.h:785
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:724 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:724
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:784
#, c-format #, c-format
msgid "Error writing credentials to Credential Manager: %hs (error %u)" msgid "Error writing credentials to Credential Manager: %hs (error %u)"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/Module.cpp:264 master/lib/TTLS_UI/src/Module.cpp:320 #: master/lib/TTLS_UI/src/Module.cpp:264 master/lib/TTLS_UI/src/Module.cpp:321
#: ver1.0/lib/TTLS_UI/src/Module.cpp:276 ver1.0/lib/TTLS_UI/src/Module.cpp:286 #: ver1.0/lib/TTLS_UI/src/Module.cpp:276 ver1.0/lib/TTLS_UI/src/Module.cpp:286
#: master/lib/EAPBase_UI/include/EAP_UI.h:787 #: ver1.1/lib/TTLS_UI/src/Module.cpp:264 ver1.1/lib/TTLS_UI/src/Module.cpp:320
#: master/lib/EAPBase_UI/include/EAP_UI.h:788
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:727 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:727
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:787
msgid "Writing credentials failed." msgid "Writing credentials failed."
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/Module.cpp:355 #: master/lib/TTLS_UI/src/Module.cpp:356 ver1.1/lib/TTLS_UI/src/Module.cpp:355
#, c-format #, c-format
msgid "Invoking EAP identity UI failed (error %u, %s, %s)." msgid "Invoking EAP identity UI failed (error %u, %s, %s)."
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/Module.cpp:357 #: master/lib/TTLS_UI/src/Module.cpp:358 ver1.1/lib/TTLS_UI/src/Module.cpp:357
#, c-format #, c-format
msgid "Invoking EAP identity UI failed (error %u)." msgid "Invoking EAP identity UI failed (error %u)."
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:117 ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:36 #: master/lib/TTLS_UI/src/Module.cpp:485
#, c-format
msgid "Invoking EAP interactive UI failed (error %u, %s, %s)."
msgstr ""
#: master/lib/TTLS_UI/src/Module.cpp:488
#, c-format
msgid "Invoking EAP interactive UI failed (error %u)."
msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:118 ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:36
#: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:182 #: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:182
#: ver1.1/lib/TTLS_UI/src/TTLS_UI.cpp:117
msgid "Inner Authentication" msgid "Inner Authentication"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:123 #: master/lib/TTLS_UI/src/TTLS_UI.cpp:124
#: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:188 #: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:188
#: ver1.1/lib/TTLS_UI/src/TTLS_UI.cpp:123
msgid "Select inner authentication method from the list" msgid "Select inner authentication method from the list"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:125 #: master/lib/TTLS_UI/src/TTLS_UI.cpp:126
#: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:190 #: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:190
#: ver1.1/lib/TTLS_UI/src/TTLS_UI.cpp:125
msgid "PAP" msgid "PAP"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:127 #: master/lib/TTLS_UI/src/TTLS_UI.cpp:128
#: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:192 #: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:192
#: ver1.1/lib/TTLS_UI/src/TTLS_UI.cpp:127
msgid "MSCHAPv2" msgid "MSCHAPv2"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:129 #: master/lib/TTLS_UI/src/TTLS_UI.cpp:130
#: ver1.1/lib/TTLS_UI/src/TTLS_UI.cpp:129
msgid "EAP-MSCHAPv2" msgid "EAP-MSCHAPv2"
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:132 #: master/lib/TTLS_UI/src/TTLS_UI.cpp:132
msgid "EAP-GTC"
msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:135
#: ver1.1/lib/TTLS_UI/src/TTLS_UI.cpp:132
msgid "Other EAP methods..." msgid "Other EAP methods..."
msgstr "" msgstr ""
#: master/lib/TTLS_UI/src/TTLS_UI.cpp:138 ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:61 #: master/lib/TTLS_UI/src/TTLS_UI.cpp:141 ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:61
#: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:197 #: ver1.0/lib/TTLS_UI/src/TTLS_UI.cpp:197
#: ver1.1/lib/TTLS_UI/src/TTLS_UI.cpp:138
msgid "Outer Authentication" msgid "Outer Authentication"
msgstr "" msgstr ""
#: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:128 #: ver1.0/lib/EAPBase_UI/src/EAP_UI.cpp:128
#: master/lib/EAPBase_UI/include/EAP_UI.h:362 #: master/lib/EAPBase_UI/include/EAP_UI.h:363
#: master/lib/EAPBase_UI/res/wxEAP_UI.h:119 #: master/lib/EAPBase_UI/res/wxEAP_UI.h:119
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:367 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:367
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:377 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:377
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.h:119 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.h:119
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:362
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.h:119
msgid "EAP Credentials" msgid "EAP Credentials"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:284 #: master/lib/EAPBase_UI/include/EAP_UI.h:285
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:302 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:302
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:284
#, c-format #, c-format
msgid "Are you sure you want to permanently remove %s provider from configuration?" msgid "Are you sure you want to permanently remove %s provider from configuration?"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:284 #: master/lib/EAPBase_UI/include/EAP_UI.h:285
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:302 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:302
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:284
msgid "Warning" msgid "Warning"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:632 #: master/lib/EAPBase_UI/include/EAP_UI.h:633
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:576 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:576
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:632
msgid "Provider Settings" msgid "Provider Settings"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:807 #: master/lib/EAPBase_UI/include/EAP_UI.h:808
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:747 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:747
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:807
#, c-format #, c-format
msgid "Deleting credentials failed (error %u)." msgid "Deleting credentials failed (error %u)."
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:846 #: master/lib/EAPBase_UI/include/EAP_UI.h:847
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:788 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:788
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:846
#, c-format #, c-format
msgid "<error %u>" msgid "<error %u>"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:850 #: master/lib/EAPBase_UI/include/EAP_UI.h:851
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:792 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:792
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:850
msgid "<error>" msgid "<error>"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:861 #: master/lib/EAPBase_UI/include/EAP_UI.h:862
#: master/lib/EAPBase_UI/include/EAP_UI.h:870 #: master/lib/EAPBase_UI/include/EAP_UI.h:871
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:803 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:803
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:812 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:812
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:861
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:870
msgid "<blank ID>" msgid "<blank ID>"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:910 #: master/lib/EAPBase_UI/include/EAP_UI.h:911
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:854 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:854
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:910
msgid "&Remember" msgid "&Remember"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:911 #: master/lib/EAPBase_UI/include/EAP_UI.h:912
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:855 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:855
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:911
msgid "Check if you would like to save credentials" msgid "Check if you would like to save credentials"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/include/EAP_UI.h:1069 #: master/lib/EAPBase_UI/include/EAP_UI.h:1123
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:1000 #: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:1000
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:1069
msgid "<Your Organization>" msgid "<Your Organization>"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.h:69 #: master/lib/EAPBase_UI/res/wxEAP_UI.h:69
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.h:69 #: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.h:69
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.h:69
msgid "EAP Connection Configuration" msgid "EAP Connection Configuration"
msgstr "" msgstr ""
#: master/lib/EAPBase_UI/res/wxEAP_UI.h:314 #: master/lib/EAPBase_UI/res/wxEAP_UI.h:336
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.h:314
msgid "EAP Identity Provider" msgid "EAP Identity Provider"
msgstr "" msgstr ""
@@ -696,6 +892,10 @@ msgstr ""
#: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4 #: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
msgid "EAP Methods" msgid "EAP Methods"
msgstr "" msgstr ""
@@ -707,6 +907,10 @@ msgstr ""
#: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4 #: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
msgid "Modules to support individual EAP methods" msgid "Modules to support individual EAP methods"
msgstr "" msgstr ""
@@ -718,6 +922,10 @@ msgstr ""
#: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:5 #: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:5
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:5 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:5
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:5 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:5
msgid "TTLS" msgid "TTLS"
msgstr "" msgstr ""
@@ -729,5 +937,9 @@ msgstr ""
#: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:5 #: ver1.0/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:5
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:5 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:5
#: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:5 #: ver1.0/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.Win32.Release.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Debug.Feature-2.idtx:5
#: ver1.1/EAPMethods/MSIBuild/en_US.x64.Release.Feature-2.idtx:5
msgid "Tunneled Transport Layer Security" msgid "Tunneled Transport Layer Security"
msgstr "" msgstr ""

View File

@@ -439,7 +439,7 @@ msgid "Use my true user name"
msgstr "" msgstr ""
#: lib/TTLS_UI/res/wxTTLS_UI.cpp:40 #: lib/TTLS_UI/res/wxTTLS_UI.cpp:40
msgid "Use &empty outer identity (RFC 4822)" msgid "Use &empty outer identity"
msgstr "" msgstr ""
#: lib/TTLS_UI/res/wxTTLS_UI.cpp:41 #: lib/TTLS_UI/res/wxTTLS_UI.cpp:41

View File

@@ -2,7 +2,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: EventMonitor\n" "Project-Id-Version: EventMonitor\n"
"POT-Creation-Date: 2016-11-08 11:55+0100\n" "POT-Creation-Date: 2017-02-02 18:14+0100\n"
"PO-Revision-Date: 2016-06-02 12:27+0200\n" "PO-Revision-Date: 2016-06-02 12:27+0200\n"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n" "Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n" "Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
@@ -16,10 +16,12 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: _\n" "X-Poedit-KeywordsList: _\n"
"X-Poedit-SearchPath-0: master/EventMonitor\n" "X-Poedit-SearchPath-0: master/EventMonitor\n"
"X-Poedit-SearchPath-1: ver1.0/EventMonitor\n" "X-Poedit-SearchPath-1: ver1.1/EventMonitor\n"
"X-Poedit-SearchPath-2: ver1.0/EventMonitor\n"
#: master/EventMonitor/App.cpp:61 ver1.0/EventMonitor/App.cpp:61 #: master/EventMonitor/App.cpp:61 ver1.0/EventMonitor/App.cpp:61
#: master/EventMonitor/Frame.h:75 ver1.0/EventMonitor/Frame.h:75 #: ver1.1/EventMonitor/App.cpp:61 master/EventMonitor/Frame.h:75
#: ver1.0/EventMonitor/Frame.h:75 ver1.1/EventMonitor/Frame.h:75
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4 #: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4 #: master/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4 #: master/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
@@ -28,44 +30,57 @@ msgstr ""
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
msgid "Event Monitor" msgid "Event Monitor"
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:83 ver1.0/EventMonitor/ETWLog.cpp:83 #: master/EventMonitor/ETWLog.cpp:83 ver1.0/EventMonitor/ETWLog.cpp:83
#: ver1.1/EventMonitor/ETWLog.cpp:83
#, c-format #, c-format
msgid "Error opening event trace (error %u)." msgid "Error opening event trace (error %u)."
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:171 ver1.0/EventMonitor/ETWLog.cpp:171 #: master/EventMonitor/ETWLog.cpp:171 ver1.0/EventMonitor/ETWLog.cpp:171
#: ver1.1/EventMonitor/ETWLog.cpp:171
msgid "Time" msgid "Time"
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:172 ver1.0/EventMonitor/ETWLog.cpp:172 #: master/EventMonitor/ETWLog.cpp:172 ver1.0/EventMonitor/ETWLog.cpp:172
#: ver1.1/EventMonitor/ETWLog.cpp:172
msgid "PID" msgid "PID"
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:173 ver1.0/EventMonitor/ETWLog.cpp:173 #: master/EventMonitor/ETWLog.cpp:173 ver1.0/EventMonitor/ETWLog.cpp:173
#: ver1.1/EventMonitor/ETWLog.cpp:173
msgid "TID" msgid "TID"
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:174 ver1.0/EventMonitor/ETWLog.cpp:174 #: master/EventMonitor/ETWLog.cpp:174 ver1.0/EventMonitor/ETWLog.cpp:174
#: ver1.1/EventMonitor/ETWLog.cpp:174
msgid "Source" msgid "Source"
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:175 ver1.0/EventMonitor/ETWLog.cpp:175 #: master/EventMonitor/ETWLog.cpp:175 ver1.0/EventMonitor/ETWLog.cpp:175
#: ver1.1/EventMonitor/ETWLog.cpp:175
msgid "Event" msgid "Event"
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:232 ver1.0/EventMonitor/ETWLog.cpp:232 #: master/EventMonitor/ETWLog.cpp:232 ver1.0/EventMonitor/ETWLog.cpp:232
#: ver1.1/EventMonitor/ETWLog.cpp:232
msgid "Access denied creating event session: you need administrative privileges (Run As Administrator) or be a member of Performance Log Users group to start event tracing session." msgid "Access denied creating event session: you need administrative privileges (Run As Administrator) or be a member of Performance Log Users group to start event tracing session."
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:235 ver1.0/EventMonitor/ETWLog.cpp:235 #: master/EventMonitor/ETWLog.cpp:235 ver1.0/EventMonitor/ETWLog.cpp:235
#: ver1.1/EventMonitor/ETWLog.cpp:235
#, c-format #, c-format
msgid "The %s event session already exists." msgid "The %s event session already exists."
msgstr "" msgstr ""
#: master/EventMonitor/ETWLog.cpp:239 ver1.0/EventMonitor/ETWLog.cpp:239 #: master/EventMonitor/ETWLog.cpp:239 ver1.0/EventMonitor/ETWLog.cpp:239
#: ver1.1/EventMonitor/ETWLog.cpp:239
#, c-format #, c-format
msgid "Error creating event session (error %u)." msgid "Error creating event session (error %u)."
msgstr "" msgstr ""
@@ -73,6 +88,8 @@ msgstr ""
#: master/EventMonitor/ETWLog.cpp:255 master/EventMonitor/ETWLog.cpp:271 #: master/EventMonitor/ETWLog.cpp:255 master/EventMonitor/ETWLog.cpp:271
#: master/EventMonitor/ETWLog.cpp:285 ver1.0/EventMonitor/ETWLog.cpp:255 #: master/EventMonitor/ETWLog.cpp:285 ver1.0/EventMonitor/ETWLog.cpp:255
#: ver1.0/EventMonitor/ETWLog.cpp:271 ver1.0/EventMonitor/ETWLog.cpp:285 #: ver1.0/EventMonitor/ETWLog.cpp:271 ver1.0/EventMonitor/ETWLog.cpp:285
#: ver1.1/EventMonitor/ETWLog.cpp:255 ver1.1/EventMonitor/ETWLog.cpp:271
#: ver1.1/EventMonitor/ETWLog.cpp:285
#, c-format #, c-format
msgid "Error enabling %s event provider (error %u)." msgid "Error enabling %s event provider (error %u)."
msgstr "" msgstr ""
@@ -82,128 +99,157 @@ msgstr ""
#: master/EventMonitor/Frame.cpp:170 ver1.0/EventMonitor/Frame.cpp:48 #: master/EventMonitor/Frame.cpp:170 ver1.0/EventMonitor/Frame.cpp:48
#: ver1.0/EventMonitor/Frame.cpp:108 ver1.0/EventMonitor/Frame.cpp:113 #: ver1.0/EventMonitor/Frame.cpp:108 ver1.0/EventMonitor/Frame.cpp:113
#: ver1.0/EventMonitor/Frame.cpp:168 ver1.0/EventMonitor/Frame.cpp:170 #: ver1.0/EventMonitor/Frame.cpp:168 ver1.0/EventMonitor/Frame.cpp:170
#: ver1.1/EventMonitor/Frame.cpp:48 ver1.1/EventMonitor/Frame.cpp:108
#: ver1.1/EventMonitor/Frame.cpp:113 ver1.1/EventMonitor/Frame.cpp:168
#: ver1.1/EventMonitor/Frame.cpp:170
#, c-format #, c-format
msgid "Toggles display of %s records" msgid "Toggles display of %s records"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65 #: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65
#: ver1.1/EventMonitor/Frame.cpp:65
msgid "E&xit" msgid "E&xit"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65 #: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65
#: ver1.1/EventMonitor/Frame.cpp:65
msgid "Quits this program" msgid "Quits this program"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:69 ver1.0/EventMonitor/Frame.cpp:69 #: master/EventMonitor/Frame.cpp:69 ver1.0/EventMonitor/Frame.cpp:69
#: ver1.1/EventMonitor/Frame.cpp:69
msgid "&Program" msgid "&Program"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:73 #: master/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:73
#: ver1.1/EventMonitor/Frame.cpp:73
msgid "&Copy" msgid "&Copy"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:73 master/EventMonitor/Frame.cpp:154 #: master/EventMonitor/Frame.cpp:73 master/EventMonitor/Frame.cpp:154
#: ver1.0/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:154 #: ver1.0/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:154
#: ver1.1/EventMonitor/Frame.cpp:73 ver1.1/EventMonitor/Frame.cpp:154
msgid "Copies selected records to clipboard" msgid "Copies selected records to clipboard"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:78 #: master/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:78
#: ver1.1/EventMonitor/Frame.cpp:78
msgid "Copy A&ll" msgid "Copy A&ll"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:78 master/EventMonitor/Frame.cpp:156 #: master/EventMonitor/Frame.cpp:78 master/EventMonitor/Frame.cpp:156
#: ver1.0/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:156 #: ver1.0/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:156
#: ver1.1/EventMonitor/Frame.cpp:78 ver1.1/EventMonitor/Frame.cpp:156
msgid "Copies all records to clipboard (including hidden)" msgid "Copies all records to clipboard (including hidden)"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158 #: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158
#: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158 #: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158
#: ver1.1/EventMonitor/Frame.cpp:83 ver1.1/EventMonitor/Frame.cpp:158
msgid "Clear" msgid "Clear"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158 #: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158
#: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158 #: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158
#: ver1.1/EventMonitor/Frame.cpp:83 ver1.1/EventMonitor/Frame.cpp:158
msgid "Clears all records from the log" msgid "Clears all records from the log"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90 #: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90
#: ver1.1/EventMonitor/Frame.cpp:90
msgid "Select &All" msgid "Select &All"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90 #: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90
#: ver1.1/EventMonitor/Frame.cpp:90
msgid "Selects all visible records" msgid "Selects all visible records"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94 #: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94
#: ver1.1/EventMonitor/Frame.cpp:94
msgid "Select &None" msgid "Select &None"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94 #: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94
#: ver1.1/EventMonitor/Frame.cpp:94
msgid "Clears record selection" msgid "Clears record selection"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:97 master/EventMonitor/Frame.cpp:142 #: master/EventMonitor/Frame.cpp:97 master/EventMonitor/Frame.cpp:142
#: ver1.0/EventMonitor/Frame.cpp:97 ver1.0/EventMonitor/Frame.cpp:142 #: ver1.0/EventMonitor/Frame.cpp:97 ver1.0/EventMonitor/Frame.cpp:142
#: ver1.1/EventMonitor/Frame.cpp:97 ver1.1/EventMonitor/Frame.cpp:142
msgid "&Edit" msgid "&Edit"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:101 #: master/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:101
#: ver1.1/EventMonitor/Frame.cpp:101
msgid "Auto &Scroll" msgid "Auto &Scroll"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:101 master/EventMonitor/Frame.cpp:164 #: master/EventMonitor/Frame.cpp:101 master/EventMonitor/Frame.cpp:164
#: ver1.0/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:164 #: ver1.0/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:164
#: ver1.1/EventMonitor/Frame.cpp:101 ver1.1/EventMonitor/Frame.cpp:164
msgid "Automatically scrolls to the most recent records as they come-in" msgid "Automatically scrolls to the most recent records as they come-in"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176 #: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176
#: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176 #: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176
#: ver1.1/EventMonitor/Frame.cpp:123 ver1.1/EventMonitor/Frame.cpp:176
msgid "Verbose" msgid "Verbose"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176 #: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176
#: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176 #: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176
#: ver1.1/EventMonitor/Frame.cpp:123 ver1.1/EventMonitor/Frame.cpp:176
msgid "Displays all levels of records" msgid "Displays all levels of records"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178 #: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178
#: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178 #: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178
#: ver1.1/EventMonitor/Frame.cpp:127 ver1.1/EventMonitor/Frame.cpp:178
msgid "Informational" msgid "Informational"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178 #: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178
#: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178 #: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178
#: ver1.1/EventMonitor/Frame.cpp:127 ver1.1/EventMonitor/Frame.cpp:178
msgid "Displays all records up to informational level" msgid "Displays all records up to informational level"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180 #: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180
#: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180 #: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180
#: ver1.1/EventMonitor/Frame.cpp:131 ver1.1/EventMonitor/Frame.cpp:180
msgid "Warning" msgid "Warning"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180 #: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180
#: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180 #: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180
#: ver1.1/EventMonitor/Frame.cpp:131 ver1.1/EventMonitor/Frame.cpp:180
msgid "Displays all records up to warning level" msgid "Displays all records up to warning level"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182 #: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182
#: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182 #: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182
#: ver1.1/EventMonitor/Frame.cpp:135 ver1.1/EventMonitor/Frame.cpp:182
msgid "Error" msgid "Error"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182 #: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182
#: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182 #: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182
#: ver1.1/EventMonitor/Frame.cpp:135 ver1.1/EventMonitor/Frame.cpp:182
msgid "Displays error level records only" msgid "Displays error level records only"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146 #: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
#: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146 #: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146
#: ver1.1/EventMonitor/Frame.cpp:142 ver1.1/EventMonitor/Frame.cpp:146
#, c-format #, c-format
msgid "%s toolbar" msgid "%s toolbar"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146 #: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
#: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146 #: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146
#: ver1.1/EventMonitor/Frame.cpp:142 ver1.1/EventMonitor/Frame.cpp:146
#, c-format #, c-format
msgid "Toggles display of %s toolbar" msgid "Toggles display of %s toolbar"
msgstr "" msgstr ""
@@ -211,31 +257,39 @@ msgstr ""
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146 #: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
#: master/EventMonitor/Frame.cpp:185 ver1.0/EventMonitor/Frame.cpp:142 #: master/EventMonitor/Frame.cpp:185 ver1.0/EventMonitor/Frame.cpp:142
#: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:185 #: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:185
#: ver1.1/EventMonitor/Frame.cpp:142 ver1.1/EventMonitor/Frame.cpp:146
#: ver1.1/EventMonitor/Frame.cpp:185
msgid "View" msgid "View"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:146 master/EventMonitor/Frame.cpp:149 #: master/EventMonitor/Frame.cpp:146 master/EventMonitor/Frame.cpp:149
#: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:149 #: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:149
#: ver1.1/EventMonitor/Frame.cpp:146 ver1.1/EventMonitor/Frame.cpp:149
msgid "&View" msgid "&View"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:154 ver1.0/EventMonitor/Frame.cpp:154 #: master/EventMonitor/Frame.cpp:154 ver1.0/EventMonitor/Frame.cpp:154
#: ver1.1/EventMonitor/Frame.cpp:154
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:156 ver1.0/EventMonitor/Frame.cpp:156 #: master/EventMonitor/Frame.cpp:156 ver1.0/EventMonitor/Frame.cpp:156
#: ver1.1/EventMonitor/Frame.cpp:156
msgid "Copy All" msgid "Copy All"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:161 ver1.0/EventMonitor/Frame.cpp:161 #: master/EventMonitor/Frame.cpp:161 ver1.0/EventMonitor/Frame.cpp:161
#: ver1.1/EventMonitor/Frame.cpp:161
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:164 ver1.0/EventMonitor/Frame.cpp:164 #: master/EventMonitor/Frame.cpp:164 ver1.0/EventMonitor/Frame.cpp:164
#: ver1.1/EventMonitor/Frame.cpp:164
msgid "Auto Scroll" msgid "Auto Scroll"
msgstr "" msgstr ""
#: master/EventMonitor/Frame.cpp:189 ver1.0/EventMonitor/Frame.cpp:189 #: master/EventMonitor/Frame.cpp:189 ver1.0/EventMonitor/Frame.cpp:189
#: ver1.1/EventMonitor/Frame.cpp:189
msgid "Trace Log" msgid "Trace Log"
msgstr "" msgstr ""
@@ -255,6 +309,14 @@ msgstr ""
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
msgid "Real-time display of internal events" msgid "Real-time display of internal events"
msgstr "" msgstr ""
@@ -266,5 +328,9 @@ msgstr ""
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4 #: ver1.0/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
#: ver1.1/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
msgid "EVENTM~1|GÉANTLink Event Monitor" msgid "EVENTM~1|GÉANTLink Event Monitor"
msgstr "" msgstr ""

View File

@@ -2,7 +2,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GÉANTLink MSI\n" "Project-Id-Version: GÉANTLink MSI\n"
"POT-Creation-Date: 2016-11-08 11:55+0100\n" "POT-Creation-Date: 2017-02-02 18:14+0100\n"
"PO-Revision-Date: 2016-06-02 12:27+0200\n" "PO-Revision-Date: 2016-06-02 12:27+0200\n"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n" "Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n" "Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
@@ -16,7 +16,8 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: _\n" "X-Poedit-KeywordsList: _\n"
"X-Poedit-SearchPath-0: master/MSI/Base/Main\n" "X-Poedit-SearchPath-0: master/MSI/Base/Main\n"
"X-Poedit-SearchPath-1: ver1.0/MSI/Base/Main\n" "X-Poedit-SearchPath-1: ver1.1/MSI/Base/Main\n"
"X-Poedit-SearchPath-2: ver1.0/MSI/Base/Main\n"
#: master/MSI/Base/Main/en_US.Win32.Debug.LaunchCondition-2.idtx:4 #: master/MSI/Base/Main/en_US.Win32.Debug.LaunchCondition-2.idtx:4
#: master/MSI/Base/Main/en_US.Win32.Release.LaunchCondition-2.idtx:4 #: master/MSI/Base/Main/en_US.Win32.Release.LaunchCondition-2.idtx:4
@@ -26,6 +27,10 @@ msgstr ""
#: ver1.0/MSI/Base/Main/en_US.Win32.Release.LaunchCondition-2.idtx:4 #: ver1.0/MSI/Base/Main/en_US.Win32.Release.LaunchCondition-2.idtx:4
#: ver1.0/MSI/Base/Main/en_US.x64.Debug.LaunchCondition-2.idtx:4 #: ver1.0/MSI/Base/Main/en_US.x64.Debug.LaunchCondition-2.idtx:4
#: ver1.0/MSI/Base/Main/en_US.x64.Release.LaunchCondition-2.idtx:4 #: ver1.0/MSI/Base/Main/en_US.x64.Release.LaunchCondition-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.Win32.Debug.LaunchCondition-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.Win32.Release.LaunchCondition-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.x64.Debug.LaunchCondition-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.x64.Release.LaunchCondition-2.idtx:4
msgid "[ProductName] requires Windows Vista or later version of Windows." msgid "[ProductName] requires Windows Vista or later version of Windows."
msgstr "" msgstr ""
@@ -45,6 +50,14 @@ msgstr ""
#: ver1.0/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:5 #: ver1.0/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:5
#: ver1.0/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:4 #: ver1.0/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:4
#: ver1.0/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:5 #: ver1.0/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:5
#: ver1.1/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:5
#: ver1.1/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:5
#: ver1.1/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:5
#: ver1.1/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:4
#: ver1.1/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:5
msgid "http://www.geant.org/" msgid "http://www.geant.org/"
msgstr "" msgstr ""
@@ -56,5 +69,9 @@ msgstr ""
#: ver1.0/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:6 #: ver1.0/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:6
#: ver1.0/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:6 #: ver1.0/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:6
#: ver1.0/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:6 #: ver1.0/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:6
#: ver1.1/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:6
#: ver1.1/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:6
#: ver1.1/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:6
#: ver1.1/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:6
msgid "https://github.com/Amebis/GEANTLink/releases" msgid "https://github.com/Amebis/GEANTLink/releases"
msgstr "" msgstr ""

BIN
Makefile

Binary file not shown.

View File

@@ -9,6 +9,7 @@ Suite of EAP supplicants for Microsoft Windows - IEEE 802.1X plug-ins for enterp
- PAP - PAP
- MSCHAPv2 - MSCHAPv2
- EAP-MSCHAPv2 - EAP-MSCHAPv2
- EAP-GTC
- System-installed EAP method chaining (experimental) - System-installed EAP method chaining (experimental)
### Security ### Security
@@ -30,9 +31,9 @@ Suite of EAP supplicants for Microsoft Windows - IEEE 802.1X plug-ins for enterp
### Deployment ### Deployment
- Released as multi-lingual 32 and 64-bit MSI packages - Released as multi-lingual 32 and 64-bit MSI packages
- [MsiUseFeature utility](https://github.com/Amebis/GEANTLink/tree/ver1.1/MsiUseFeature) for GÉANTLink install state testing (for embedding GÉANTLink into other setup packages) - [MsiUseFeature utility](https://github.com/Amebis/GEANTLink/tree/master/MsiUseFeature) for GÉANTLink install state testing (for embedding GÉANTLink into other setup packages)
- [CredWrite utility](https://github.com/Amebis/GEANTLink/tree/ver1.1/CredWrite) for automated user credential import to Credential Manager - [CredWrite utility](https://github.com/Amebis/GEANTLink/tree/master/CredWrite) for automated user credential import to Credential Manager
- [WLANManager utility](https://github.com/Amebis/GEANTLink/tree/ver1.1/WLANManager) to allow network profile configuration dialog shortcuts - [WLANManager utility](https://github.com/Amebis/GEANTLink/tree/master/WLANManager) to allow network profile configuration dialog shortcuts
## Building ## Building

View File

@@ -55,6 +55,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EapHost", "lib\EapHost\buil
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EapHost_UI", "lib\EapHost_UI\build\EapHost_UI.vcxproj", "{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EapHost_UI", "lib\EapHost_UI\build\EapHost_UI.vcxproj", "{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GTC", "lib\GTC\build\GTC.vcxproj", "{114A70BB-8698-4A0C-8C90-58F22EDD8129}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GTC_UI", "lib\GTC_UI\build\GTC_UI.vcxproj", "{34680813-3A52-46FB-B5A8-1E4BBF770855}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
@@ -231,6 +235,22 @@ Global
{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|Win32.Build.0 = Release|Win32 {13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|Win32.Build.0 = Release|Win32
{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|x64.ActiveCfg = Release|x64 {13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|x64.ActiveCfg = Release|x64
{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|x64.Build.0 = Release|x64 {13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|x64.Build.0 = Release|x64
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Debug|Win32.ActiveCfg = Debug|Win32
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Debug|Win32.Build.0 = Debug|Win32
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Debug|x64.ActiveCfg = Debug|x64
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Debug|x64.Build.0 = Debug|x64
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|Win32.ActiveCfg = Release|Win32
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|Win32.Build.0 = Release|Win32
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|x64.ActiveCfg = Release|x64
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|x64.Build.0 = Release|x64
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Debug|Win32.ActiveCfg = Debug|Win32
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Debug|Win32.Build.0 = Debug|Win32
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Debug|x64.ActiveCfg = Debug|x64
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Debug|x64.Build.0 = Debug|x64
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|Win32.ActiveCfg = Release|Win32
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|Win32.Build.0 = Release|Win32
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|x64.ActiveCfg = Release|x64
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|x64.Build.0 = Release|x64
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@@ -253,6 +273,8 @@ Global
{7AF5B922-7C17-428A-97E0-09E3B41A684D} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393} {7AF5B922-7C17-428A-97E0-09E3B41A684D} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393}
{B385EC2B-C3F4-48BB-9BAC-8B996DE7F754} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393} {B385EC2B-C3F4-48BB-9BAC-8B996DE7F754} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393}
{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393} {13D2D8B5-F6AA-459D-B5F7-29B95DD9D583} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393}
{114A70BB-8698-4A0C-8C90-58F22EDD8129} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393}
{34680813-3A52-46FB-B5A8-1E4BBF770855} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393}
{2D3CE079-7EB1-4F47-B79E-F0310671ECCB} = {7B5EC9B7-208C-426A-941D-DAF9271BD4A4} {2D3CE079-7EB1-4F47-B79E-F0310671ECCB} = {7B5EC9B7-208C-426A-941D-DAF9271BD4A4}
{679D03C5-CD70-4FFA-93F8-A4AB3637509B} = {7B5EC9B7-208C-426A-941D-DAF9271BD4A4} {679D03C5-CD70-4FFA-93F8-A4AB3637509B} = {7B5EC9B7-208C-426A-941D-DAF9271BD4A4}
{E0D0725B-B2FC-4225-9481-CA9B1B6306F2} = {7B5EC9B7-208C-426A-941D-DAF9271BD4A4} {E0D0725B-B2FC-4225-9481-CA9B1B6306F2} = {7B5EC9B7-208C-426A-941D-DAF9271BD4A4}

View File

@@ -16,7 +16,8 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: _\n" "X-Poedit-KeywordsList: _\n"
"X-Poedit-SearchPath-0: master/WLANManager\n" "X-Poedit-SearchPath-0: master/WLANManager\n"
"X-Poedit-SearchPath-1: ver1.0/WLANManager\n" "X-Poedit-SearchPath-1: ver1.1/WLANManager\n"
"X-Poedit-SearchPath-2: ver1.0/WLANManager\n"
#: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4 #: MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4 #: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4

View File

@@ -29,7 +29,7 @@
// Product version as a single DWORD // Product version as a single DWORD
// Note: Used for version comparison within C/C++ code. // Note: Used for version comparison within C/C++ code.
// //
#define PRODUCT_VERSION 0x01010400 #define PRODUCT_VERSION 0x01020100
// //
// Product version by components // Product version by components
@@ -38,27 +38,27 @@
// separately. // separately.
// //
#define PRODUCT_VERSION_MAJ 1 #define PRODUCT_VERSION_MAJ 1
#define PRODUCT_VERSION_MIN 1 #define PRODUCT_VERSION_MIN 2
#define PRODUCT_VERSION_REV 4 #define PRODUCT_VERSION_REV 1
#define PRODUCT_VERSION_BUILD 0 #define PRODUCT_VERSION_BUILD 0
// //
// Human readable product version and build year for UI // Human readable product version and build year for UI
// //
#define PRODUCT_VERSION_STR "1.1a" #define PRODUCT_VERSION_STR "1.2-beta"
#define PRODUCT_BUILD_YEAR_STR "2016" #define PRODUCT_BUILD_YEAR_STR "2016"
// //
// Numerical version presentation for ProductVersion propery in // Numerical version presentation for ProductVersion propery in
// MSI packages (syntax: N.N[.N[.N]]) // MSI packages (syntax: N.N[.N[.N]])
// //
#define PRODUCT_VERSION_INST "1.1.4" #define PRODUCT_VERSION_INST "1.2.1"
// //
// The product code for ProductCode property in MSI packages // The product code for ProductCode property in MSI packages
// Replace with new on every version change, regardless how minor it is. // Replace with new on every version change, regardless how minor it is.
// //
#define PRODUCT_VERSION_GUID "{701B8E8C-56E1-46FA-B568-57867564E573}" #define PRODUCT_VERSION_GUID "{FDBF521E-65C3-4715-823F-CF7CE63E0470}"
// //
// Product vendor // Product vendor

View File

@@ -85,6 +85,7 @@
<ClInclude Include="..\include\EAPXML.h" /> <ClInclude Include="..\include\EAPXML.h" />
<ClInclude Include="..\include\Method.h" /> <ClInclude Include="..\include\Method.h" />
<ClInclude Include="..\include\Module.h" /> <ClInclude Include="..\include\Module.h" />
<ClInclude Include="..\include\UIContext.h" />
<ClInclude Include="..\src\StdAfx.h" /> <ClInclude Include="..\src\StdAfx.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -99,6 +100,7 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\UIContext.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Events\build\Events.vcxproj"> <ProjectReference Include="..\..\Events\build\Events.vcxproj">

View File

@@ -32,6 +32,9 @@
<ClInclude Include="..\include\Credentials.h"> <ClInclude Include="..\include\Credentials.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\include\UIContext.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\src\StdAfx.cpp"> <ClCompile Include="..\src\StdAfx.cpp">
@@ -52,5 +55,8 @@
<ClCompile Include="..\src\EAP.cpp"> <ClCompile Include="..\src\EAP.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\UIContext.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -226,6 +226,98 @@ namespace eap
}; };
///
/// Identity-only based method credentials
///
class credentials_identity : public credentials
{
public:
///
/// Constructs credentials
///
/// \param[in] mod EAP module to use for global services
///
credentials_identity(_In_ module &mod);
///
/// Copies credentials
///
/// \param[in] other Credentials to copy from
///
credentials_identity(_In_ const credentials_identity &other);
///
/// Moves credentials
///
/// \param[in] other Credentials to move from
///
credentials_identity(_Inout_ credentials_identity &&other);
///
/// Copies credentials
///
/// \param[in] other Credentials to copy from
///
/// \returns Reference to this object
///
credentials_identity& operator=(_In_ const credentials_identity &other);
///
/// Moves credentials
///
/// \param[in] other Credentials to move from
///
/// \returns Reference to this object
///
credentials_identity& operator=(_Inout_ credentials_identity &&other);
virtual config* clone() const;
/// \name XML management
/// @{
virtual void save(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pConfigRoot) const;
virtual void load(_In_ IXMLDOMNode *pConfigRoot);
/// @}
/// \name Storage
/// @{
virtual void store(_In_z_ LPCTSTR pszTargetName, _In_ unsigned int level) const;
virtual void retrieve(_In_z_ LPCTSTR pszTargetName, _In_ unsigned int level);
///
/// @copydoc eap::credentials::target_suffix()
/// \returns This implementation always returns `_T("pass")`
///
virtual LPCTSTR target_suffix() const;
/// @}
///
/// Combine credentials in the following order:
///
/// 1. Cached credentials
/// 2. Configured credentials (if \p cfg is derived from `config_method_with_cred`)
/// 3. Stored credentials
///
/// \param[in] dwFlags A combination of [EAP flags](https://msdn.microsoft.com/en-us/library/windows/desktop/bb891975.aspx) that describe the EAP authentication session behavior
/// \param[in] hTokenImpersonateUser Impersonation token for a logged-on user to collect user-related information
/// \param[in] cred_cached Cached credentials (optional, can be \c NULL)
/// \param[in] cfg Method configuration (when derived from `config_method_with_cred`, metod attempt to load credentials from \p cfg)
/// \param[in] pszTargetName The name in Windows Credential Manager to retrieve credentials from (optional, can be \c NULL)
///
/// \returns
/// - \c source_cache Credentials were obtained from EapHost cache
/// - \c source_config Credentials were set by method configuration
/// - \c source_storage Credentials were loaded from Windows Credential Manager
///
virtual source_t combine(
_In_ DWORD dwFlags,
_In_ HANDLE hTokenImpersonateUser,
_In_opt_ const credentials *cred_cached,
_In_ const config_method &cfg,
_In_opt_z_ LPCTSTR pszTargetName);
};
/// ///
/// Password based method credentials /// Password based method credentials
/// ///

View File

@@ -0,0 +1,103 @@
/*
Copyright 2015-2017 Amebis
Copyright 2016-2017 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
namespace eap
{
class ui_context;
}
#pragma once
#include "Config.h"
#include "Credentials.h"
#include "Module.h"
#include "../../../include/Version.h"
namespace eap
{
///
/// \defgroup EAPBaseUICtx UI Context
/// Back and front-end inter-process data exchange
///
/// @{
///
/// UI context
///
class ui_context : public config
{
public:
///
/// Constructs context
///
/// \param[in] mod EAP module to use for global services
/// \param[in] cfg Connection configuration
/// \param[in] cred Connection credentials
///
ui_context(_In_ module &mod, _In_ config_connection &cfg, _In_ credentials_connection &cred);
///
/// Copies context
///
/// \param[in] other Credentials to copy from
///
ui_context(_In_ const ui_context &other);
///
/// Moves context
///
/// \param[in] other Credentials to move from
///
ui_context(_Inout_ ui_context &&other);
///
/// Copies context
///
/// \param[in] other Credentials to copy from
///
/// \returns Reference to this object
///
ui_context& operator=(_In_ const ui_context &other);
///
/// Moves context
///
/// \param[in] other Configuration to move from
///
/// \returns Reference to this object
///
ui_context& operator=(_Inout_ ui_context &&other);
/// \name BLOB management
/// @{
virtual void operator<<(_Inout_ cursor_out &cursor) const;
virtual size_t get_pk_size() const;
virtual void operator>>(_Inout_ cursor_in &cursor);
/// @}
public:
config_connection &m_cfg; ///< Connection configuration
credentials_connection &m_cred; ///< Connection credentials
};
/// @}
}

View File

@@ -163,6 +163,183 @@ tstring eap::credentials::get_name() const
} }
//////////////////////////////////////////////////////////////////////
// eap::credentials_identity
//////////////////////////////////////////////////////////////////////
eap::credentials_identity::credentials_identity(_In_ module &mod) : credentials(mod)
{
}
eap::credentials_identity::credentials_identity(_In_ const credentials_identity &other) : credentials(other)
{
}
eap::credentials_identity::credentials_identity(_Inout_ credentials_identity &&other) : credentials(std::move(other))
{
}
eap::credentials_identity& eap::credentials_identity::operator=(_In_ const credentials_identity &other)
{
if (this != &other)
(credentials&)*this = other;
return *this;
}
eap::credentials_identity& eap::credentials_identity::operator=(_Inout_ credentials_identity &&other)
{
if (this != &other)
(credentials&)*this = std::move(other);
return *this;
}
eap::config* eap::credentials_identity::clone() const
{
return new credentials_identity(*this);
}
void eap::credentials_identity::save(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pConfigRoot) const
{
assert(pDoc);
assert(pConfigRoot);
// We could have used credentials::save() to save identity,
// but that method tolerates absence of <UserName> element,
// whereas for this class the absence of <UserName> is fatal.
config::save(pDoc, pConfigRoot);
HRESULT hr;
// <UserName>
if (FAILED(hr = eapxml::put_element_value(pDoc, pConfigRoot, bstr(L"UserName"), namespace_eapmetadata, bstr(m_identity))))
throw com_runtime_error(hr, __FUNCTION__ " Error creating <UserName> element.");
}
void eap::credentials_identity::load(_In_ IXMLDOMNode *pConfigRoot)
{
assert(pConfigRoot);
HRESULT hr;
// We could have used credentials::load() to load identity,
// but that method tolerates absence of <UserName> element,
// whereas for this class the absence of <UserName> is fatal.
config::load(pConfigRoot);
wstring xpath(eapxml::get_xpath(pConfigRoot));
if (FAILED(hr = eapxml::get_element_value(pConfigRoot, bstr(L"eap-metadata:UserName"), m_identity)))
throw com_runtime_error(hr, __FUNCTION__ " Error reading <UserName> element.");
m_module.log_config((xpath + L"/UserName").c_str(), m_identity.c_str());
}
void eap::credentials_identity::store(_In_z_ LPCTSTR pszTargetName, _In_ unsigned int level) const
{
assert(pszTargetName);
tstring target(target_name(pszTargetName, level));
// Write credentials.
assert(m_identity.length() < CRED_MAX_USERNAME_LENGTH);
CREDENTIAL cred = {
0, // Flags
CRED_TYPE_GENERIC, // Type
const_cast<LPTSTR>(target.c_str()), // TargetName
_T(""), // Comment
{ 0, 0 }, // LastWritten
0, // CredentialBlobSize
NULL, // CredentialBlob
CRED_PERSIST_ENTERPRISE, // Persist
0, // AttributeCount
NULL, // Attributes
NULL, // TargetAlias
const_cast<LPTSTR>(m_identity.c_str()) // UserName
};
if (!CredWrite(&cred, 0))
throw win_runtime_error(__FUNCTION__ " CredWrite failed.");
}
void eap::credentials_identity::retrieve(_In_z_ LPCTSTR pszTargetName, _In_ unsigned int level)
{
assert(pszTargetName);
// Read credentials.
unique_ptr<CREDENTIAL, CredFree_delete<CREDENTIAL> > cred;
if (!CredRead(target_name(pszTargetName, level).c_str(), CRED_TYPE_GENERIC, 0, (PCREDENTIAL*)&cred))
throw win_runtime_error(__FUNCTION__ " CredRead failed.");
if (cred->UserName)
m_identity = cred->UserName;
else
m_identity.clear();
wstring xpath(pszTargetName);
m_module.log_config((xpath + L"/Identity").c_str(), m_identity.c_str());
}
LPCTSTR eap::credentials_identity::target_suffix() const
{
return _T("id");
}
eap::credentials::source_t eap::credentials_identity::combine(
_In_ DWORD dwFlags,
_In_ HANDLE hTokenImpersonateUser,
_In_opt_ const credentials *cred_cached,
_In_ const config_method &cfg,
_In_opt_z_ LPCTSTR pszTargetName)
{
UNREFERENCED_PARAMETER(dwFlags);
if (cred_cached) {
// Using EAP service cached credentials.
*this = *dynamic_cast<const credentials_identity*>(cred_cached);
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_CACHED2, event_data((unsigned int)cfg.get_method_id()), event_data(credentials_identity::get_name()), event_data(pszTargetName), event_data::blank);
return source_cache;
}
auto cfg_with_cred = dynamic_cast<const config_method_with_cred*>(&cfg);
if (cfg_with_cred && cfg_with_cred->m_use_cred) {
// Using configured credentials.
*this = *dynamic_cast<const credentials_identity*>(cfg_with_cred->m_cred.get());
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_CONFIG2, event_data((unsigned int)cfg.get_method_id()), event_data(credentials_identity::get_name()), event_data(pszTargetName), event_data::blank);
return source_config;
}
if (pszTargetName) {
// Switch user context.
user_impersonator impersonating(hTokenImpersonateUser);
try {
credentials_identity cred_loaded(m_module);
cred_loaded.retrieve(pszTargetName, cfg.m_level);
// Using stored credentials.
*this = std::move(cred_loaded);
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_STORED2, event_data((unsigned int)cfg.get_method_id()), event_data(credentials_identity::get_name()), event_data(pszTargetName), event_data::blank);
return source_storage;
} catch (...) {
// Not actually an error.
}
}
return source_unknown;
}
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// eap::credentials_pass // eap::credentials_pass
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////

View File

@@ -24,6 +24,7 @@
#include "../include/Credentials.h" #include "../include/Credentials.h"
#include "../include/Method.h" #include "../include/Method.h"
#include "../include/Module.h" #include "../include/Module.h"
#include "../include/UIContext.h"
#include "../include/EAP.h" #include "../include/EAP.h"
#include "../include/EAPXML.h" #include "../include/EAPXML.h"

View File

@@ -0,0 +1,101 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StdAfx.h"
using namespace std;
using namespace winstd;
//////////////////////////////////////////////////////////////////////
// eap::ui_context
//////////////////////////////////////////////////////////////////////
eap::ui_context::ui_context(_In_ module &mod, _In_ config_connection &cfg, _In_ credentials_connection &cred) :
config(mod),
m_cfg(cfg),
m_cred(cred)
{
}
eap::ui_context::ui_context(_In_ const ui_context &other) :
m_cfg (other.m_cfg ),
m_cred(other.m_cred),
config(other )
{
}
eap::ui_context::ui_context(_Inout_ ui_context &&other) :
m_cfg ( other.m_cfg ),
m_cred( other.m_cred ),
config(std::move(other ))
{
}
eap::ui_context& eap::ui_context::operator=(_In_ const ui_context &other)
{
if (this != &other) {
assert(std::addressof(m_cfg ) == std::addressof(other.m_cfg )); // Copy context within same configuration only!
assert(std::addressof(m_cred) == std::addressof(other.m_cred)); // Copy context within same credentials only!
(config&)*this = other;
}
return *this;
}
eap::ui_context& eap::ui_context::operator=(_Inout_ ui_context &&other)
{
if (this != &other) {
assert(std::addressof(m_cfg ) == std::addressof(other.m_cfg )); // Move context within same configuration only!
assert(std::addressof(m_cred) == std::addressof(other.m_cred)); // Move context within same credentials only!
(config&)*this = std::move(other);
}
return *this;
}
void eap::ui_context::operator<<(_Inout_ cursor_out &cursor) const
{
config::operator<<(cursor);
cursor << m_cfg ;
cursor << m_cred;
}
size_t eap::ui_context::get_pk_size() const
{
return
config::get_pk_size() +
pksizeof(m_cfg ) +
pksizeof(m_cred);
}
void eap::ui_context::operator>>(_Inout_ cursor_in &cursor)
{
config::operator>>(cursor);
cursor >> m_cfg ;
cursor >> m_cred;
}

View File

@@ -43,6 +43,7 @@ class wxEAPProviderIDPanel;
class wxEAPConfigProvider; class wxEAPConfigProvider;
template <class _Tcred, class _wxT> class wxEAPCredentialsConfigPanel; template <class _Tcred, class _wxT> class wxEAPCredentialsConfigPanel;
template <class _Tcred, class _Tbase> class wxEAPCredentialsPanel; template <class _Tcred, class _Tbase> class wxEAPCredentialsPanel;
template <class _Tcred, class _Tbase> class wxIdentityCredentialsPanel;
template <class _Tcred, class _Tbase> class wxPasswordCredentialsPanel; template <class _Tcred, class _Tbase> class wxPasswordCredentialsPanel;
class wxEAPProviderSelectDialog; class wxEAPProviderSelectDialog;
@@ -945,14 +946,14 @@ protected:
/// ///
/// Generic password credential entry panel /// Generic identity credential entry panel
/// ///
template <class _Tcred, class _Tbase> template <class _Tcred, class _Tbase>
class wxPasswordCredentialsPanel : public wxEAPCredentialsPanel<_Tcred, _Tbase> class wxIdentityCredentialsPanel : public wxEAPCredentialsPanel<_Tcred, _Tbase>
{ {
public: public:
/// ///
/// Constructs a password credentials panel /// Constructs a identity credentials panel
/// ///
/// \param[in] prov Provider configuration data /// \param[in] prov Provider configuration data
/// \param[in] cfg Method configuration data /// \param[in] cfg Method configuration data
@@ -960,14 +961,13 @@ public:
/// \param[in] parent Parent window /// \param[in] parent Parent window
/// \param[in] is_config Is this panel used to config credentials? /// \param[in] is_config Is this panel used to config credentials?
/// ///
wxPasswordCredentialsPanel(const eap::config_provider &prov, const eap::config_method_with_cred &cfg, _Tcred &cred, wxWindow* parent, bool is_config = false) : wxIdentityCredentialsPanel(const eap::config_provider &prov, const eap::config_method_with_cred &cfg, _Tcred &cred, wxWindow* parent, bool is_config = false) :
m_password_set(false),
wxEAPCredentialsPanel<_Tcred, _Tbase>(prov, cfg, cred, parent, is_config) wxEAPCredentialsPanel<_Tcred, _Tbase>(prov, cfg, cred, parent, is_config)
{ {
// Load and set icon. // Load and set icon.
winstd::library lib_shell32; winstd::library lib_shell32;
if (lib_shell32.load(_T("imageres.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE)) if (lib_shell32.load(_T("shell32.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE))
m_credentials_icon->SetIcon(wxLoadIconFromResource(lib_shell32, MAKEINTRESOURCE(82))); m_credentials_icon->SetIcon(wxLoadIconFromResource(lib_shell32, MAKEINTRESOURCE(/*16770*/269)));
bool layout = false; bool layout = false;
if (!m_prov.m_lbl_alt_credential.empty()) { if (!m_prov.m_lbl_alt_credential.empty()) {
@@ -981,11 +981,6 @@ public:
layout = true; layout = true;
} }
if (!m_prov.m_lbl_alt_password.empty()) {
m_password_label->SetLabel(m_prov.m_lbl_alt_password);
layout = true;
}
if (layout) if (layout)
this->Layout(); this->Layout();
} }
@@ -997,26 +992,85 @@ protected:
{ {
m_identity->SetValue(m_cred.m_identity); m_identity->SetValue(m_cred.m_identity);
m_identity->SetSelection(0, -1); m_identity->SetSelection(0, -1);
m_password->SetValue(m_cred.m_password.empty() ? wxEmptyString : wxT("dummypass"));
m_password_set = false;
if (!m_is_config && m_cfg.m_use_cred) { if (!m_is_config && m_cfg.m_use_cred) {
// Credential prompt mode & Using configured credentials // Credential prompt mode & Using configured credentials
m_identity_label->Enable(false); m_identity_label->Enable(false);
m_identity ->Enable(false); m_identity ->Enable(false);
m_password_label->Enable(false);
m_password ->Enable(false);
} }
return wxEAPCredentialsPanel<_Tcred, wxPasswordCredentialsPanelBase>::TransferDataToWindow(); return wxEAPCredentialsPanel<_Tcred, _Tbase>::TransferDataToWindow();
} }
virtual bool TransferDataFromWindow() virtual bool TransferDataFromWindow()
{ {
if (!wxEAPCredentialsPanel<_Tcred, wxPasswordCredentialsPanelBase>::TransferDataFromWindow()) if (!wxEAPCredentialsPanel<_Tcred, _Tbase>::TransferDataFromWindow())
return false; return false;
m_cred.m_identity = m_identity->GetValue(); m_cred.m_identity = m_identity->GetValue();
return true;
}
/// \endcond
};
/// @}
///
/// Generic password credential entry panel
///
template <class _Tcred, class _Tbase>
class wxPasswordCredentialsPanel : public wxIdentityCredentialsPanel<_Tcred, _Tbase>
{
public:
///
/// Constructs a password credentials panel
///
/// \param[in] prov Provider configuration data
/// \param[in] cfg Method configuration data
/// \param[inout] cred Credentials data
/// \param[in] parent Parent window
/// \param[in] is_config Is this panel used to config credentials?
///
wxPasswordCredentialsPanel(const eap::config_provider &prov, const eap::config_method_with_cred &cfg, _Tcred &cred, wxWindow* parent, bool is_config = false) :
m_password_set(false),
wxIdentityCredentialsPanel<_Tcred, _Tbase>(prov, cfg, cred, parent, is_config)
{
// Load and set icon.
winstd::library lib_shell32;
if (lib_shell32.load(_T("imageres.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE))
m_credentials_icon->SetIcon(wxLoadIconFromResource(lib_shell32, MAKEINTRESOURCE(82)));
if (!m_prov.m_lbl_alt_password.empty()) {
m_password_label->SetLabel(m_prov.m_lbl_alt_password);
this->Layout();
}
}
protected:
/// \cond internal
virtual bool TransferDataToWindow()
{
m_password->SetValue(m_cred.m_password.empty() ? wxEmptyString : wxT("dummypass"));
m_password_set = false;
if (!m_is_config && m_cfg.m_use_cred) {
// Credential prompt mode & Using configured credentials
m_password_label->Enable(false);
m_password ->Enable(false);
}
return wxIdentityCredentialsPanel<_Tcred, _Tbase>::TransferDataToWindow();
}
virtual bool TransferDataFromWindow()
{
if (!wxIdentityCredentialsPanel<_Tcred, _Tbase>::TransferDataFromWindow())
return false;
if (m_password_set) if (m_password_set)
m_cred.m_password = m_password->GetValue(); m_cred.m_password = m_password->GetValue();
@@ -1025,7 +1079,7 @@ protected:
virtual void OnPasswordText(wxCommandEvent& event) virtual void OnPasswordText(wxCommandEvent& event)
{ {
wxEAPCredentialsPanel<_Tcred, _Tbase>::OnPasswordText(event); wxIdentityCredentialsPanel<_Tcred, _Tbase>::OnPasswordText(event);
m_password_set = true; m_password_set = true;
} }

View File

@@ -418,6 +418,55 @@ wxPasswordCredentialsPanelBase::~wxPasswordCredentialsPanelBase()
} }
wxIdentityCredentialsPanelBase::wxIdentityCredentialsPanelBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxEAPCredentialsPanelBase( parent, id, pos, size, style )
{
m_sb_credentials = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("User ID") ), wxVERTICAL );
wxBoxSizer* sb_credentials_horiz;
sb_credentials_horiz = new wxBoxSizer( wxHORIZONTAL );
m_credentials_icon = new wxStaticBitmap( m_sb_credentials->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
sb_credentials_horiz->Add( m_credentials_icon, 0, wxALL, 5 );
m_sb_credentials_vert = new wxBoxSizer( wxVERTICAL );
m_credentials_label = new wxStaticText( m_sb_credentials->GetStaticBox(), wxID_ANY, _("Please provide your user ID."), wxDefaultPosition, wxDefaultSize, 0 );
m_credentials_label->Wrap( 440 );
m_sb_credentials_vert->Add( m_credentials_label, 0, wxALL|wxEXPAND, 5 );
wxFlexGridSizer* sb_credentials_tbl;
sb_credentials_tbl = new wxFlexGridSizer( 0, 2, 5, 5 );
sb_credentials_tbl->AddGrowableCol( 1 );
sb_credentials_tbl->SetFlexibleDirection( wxBOTH );
sb_credentials_tbl->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_identity_label = new wxStaticText( m_sb_credentials->GetStaticBox(), wxID_ANY, _("User ID:"), wxDefaultPosition, wxDefaultSize, 0 );
m_identity_label->Wrap( -1 );
sb_credentials_tbl->Add( m_identity_label, 0, wxALIGN_CENTER_VERTICAL, 5 );
m_identity = new wxTextCtrl( m_sb_credentials->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_identity->SetToolTip( _("Enter your user name here (user@domain.org, DOMAIN\\User, etc.)") );
sb_credentials_tbl->Add( m_identity, 2, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
m_sb_credentials_vert->Add( sb_credentials_tbl, 0, wxEXPAND|wxALL, 5 );
sb_credentials_horiz->Add( m_sb_credentials_vert, 1, wxEXPAND, 5 );
m_sb_credentials->Add( sb_credentials_horiz, 0, wxEXPAND, 5 );
this->SetSizer( m_sb_credentials );
this->Layout();
}
wxIdentityCredentialsPanelBase::~wxIdentityCredentialsPanelBase()
{
}
wxEAPProviderContactInfoPanelBase::wxEAPProviderContactInfoPanelBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style ) wxEAPProviderContactInfoPanelBase::wxEAPProviderContactInfoPanelBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
{ {
wxStaticBoxSizer* sb_provider_contact; wxStaticBoxSizer* sb_provider_contact;

View File

@@ -3116,6 +3116,446 @@
</object> </object>
</object> </object>
</object> </object>
<object class="Panel" expanded="1">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
<property name="bg"></property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">wxIdentityCredentialsPanelBase</property>
<property name="pos"></property>
<property name="size">500,-1</property>
<property name="subclass">wxEAPCredentialsPanelBase; ../include/wxEAP_UIBase.h</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<event name="OnAuiFindManager"></event>
<event name="OnAuiPaneButton"></event>
<event name="OnAuiPaneClose"></event>
<event name="OnAuiPaneMaximize"></event>
<event name="OnAuiPaneRestore"></event>
<event name="OnAuiRender"></event>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnInitDialog"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
<property name="label">User ID</property>
<property name="minimum_size"></property>
<property name="name">m_sb_credentials</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">protected</property>
<event name="OnUpdateUI"></event>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">sb_credentials_horiz</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticBitmap" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap">Load From Icon Resource; ; [32; 32]</property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_credentials_icon</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">m_sb_credentials_vert</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">protected</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Please provide your user ID.</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_credentials_label</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">440</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">0</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">2</property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols">1</property>
<property name="growablerows"></property>
<property name="hgap">5</property>
<property name="minimum_size"></property>
<property name="name">sb_credentials_tbl</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="rows">0</property>
<property name="vgap">5</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">User ID:</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_identity_label</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">2</property>
<object class="wxTextCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_identity</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip">Enter your user name here (user@domain.org, DOMAIN\User, etc.)</property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
<object class="Panel" expanded="1"> <object class="Panel" expanded="1">
<property name="aui_managed">0</property> <property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property> <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>

View File

@@ -222,6 +222,28 @@ class wxPasswordCredentialsPanelBase : public wxEAPCredentialsPanelBase
}; };
///////////////////////////////////////////////////////////////////////////////
/// Class wxIdentityCredentialsPanelBase
///////////////////////////////////////////////////////////////////////////////
class wxIdentityCredentialsPanelBase : public wxEAPCredentialsPanelBase
{
private:
protected:
wxStaticBoxSizer* m_sb_credentials;
wxStaticBitmap* m_credentials_icon;
wxBoxSizer* m_sb_credentials_vert;
wxStaticText* m_credentials_label;
wxStaticText* m_identity_label;
wxTextCtrl* m_identity;
public:
wxIdentityCredentialsPanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,-1 ), long style = wxTAB_TRAVERSAL );
~wxIdentityCredentialsPanelBase();
};
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
/// Class wxEAPProviderContactInfoPanelBase /// Class wxEAPProviderContactInfoPanelBase
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

Binary file not shown.

2
lib/GTC/build/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/temp
/*.user

12
lib/GTC/build/GTC.props Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>..\..\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\..\WinStd\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

104
lib/GTC/build/GTC.vcxproj Normal file
View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{114A70BB-8698-4A0C-8C90-58F22EDD8129}</ProjectGuid>
<RootNamespace>GTC</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\Win32.props" />
<Import Project="..\..\..\include\Debug.props" />
<Import Project="GTC.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\x64.props" />
<Import Project="..\..\..\include\Debug.props" />
<Import Project="GTC.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\Win32.props" />
<Import Project="..\..\..\include\Release.props" />
<Import Project="GTC.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\x64.props" />
<Import Project="..\..\..\include\Release.props" />
<Import Project="GTC.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<ItemGroup>
<ClInclude Include="..\include\Config.h" />
<ClInclude Include="..\include\Method.h" />
<ClInclude Include="..\src\StdAfx.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\src\Config.cpp" />
<ClCompile Include="..\src\Method.cpp" />
<ClCompile Include="..\src\StdAfx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Events\build\Events.vcxproj">
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\StdAfx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\Config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\Method.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\src\StdAfx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\Config.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\Method.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

110
lib/GTC/include/Config.h Normal file
View File

@@ -0,0 +1,110 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include <sal.h>
namespace eap
{
class config_method_eapgtc;
}
#pragma once
#include "../../EAPBase/include/Config.h"
#include <Windows.h>
#include <sal.h>
#include <tchar.h>
namespace eap
{
/// \addtogroup EAPBaseConfig
/// @{
///
/// EAP-GTC configuration
///
class config_method_eapgtc : public config_method_with_cred
{
public:
///
/// Constructs configuration
///
/// \param[in] mod EAP module to use for global services
/// \param[in] level Config level (0=outer, 1=inner, 2=inner-inner...)
///
config_method_eapgtc(_In_ module &mod, _In_ unsigned int level);
///
/// Copies configuration
///
/// \param[in] other Configuration to copy from
///
config_method_eapgtc(_In_ const config_method_eapgtc &other);
///
/// Moves configuration
///
/// \param[in] other Configuration to move from
///
config_method_eapgtc(_Inout_ config_method_eapgtc &&other);
///
/// Copies configuration
///
/// \param[in] other Configuration to copy from
///
/// \returns Reference to this object
///
config_method_eapgtc& operator=(_In_ const config_method_eapgtc &other);
///
/// Moves configuration
///
/// \param[in] other Configuration to move from
///
/// \returns Reference to this object
///
config_method_eapgtc& operator=(_Inout_ config_method_eapgtc &&other);
virtual config* clone() const;
///
/// @copydoc eap::config_method::get_method_id()
/// \returns This implementation always returns `winstd::eap_type_gtc`
///
virtual winstd::eap_type_t get_method_id() const;
///
/// @copydoc eap::config_method::get_method_str()
/// \returns This implementation always returns `L"EAP-GTC"`
///
virtual const wchar_t* get_method_str() const;
///
/// @copydoc eap::config_method::make_credentials()
/// \returns This implementation always returns `eap::credentials_identity` type of credentials
///
virtual credentials* make_credentials() const;
};
/// @}
}

118
lib/GTC/include/Method.h Normal file
View File

@@ -0,0 +1,118 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
namespace eap
{
class method_gtc;
}
#pragma once
#include "Config.h"
#include "../../EAPBase/include/Method.h"
namespace eap
{
/// \addtogroup EAPBaseMethod
/// @{
///
/// GTC method
///
class method_gtc : public method
{
WINSTD_NONCOPYABLE(method_gtc)
public:
///
/// Constructs a GTC method
///
/// \param[in] mod GTC module to use for global services
/// \param[in] cfg Method configuration
/// \param[in] cred User credentials
///
method_gtc(_In_ module &mod, _In_ config_method_eapgtc &cfg, _In_ credentials_identity &cred);
///
/// Moves a GTC method
///
/// \param[in] other GTC method to move from
///
method_gtc(_Inout_ method_gtc &&other);
///
/// Moves a GTC method
///
/// \param[in] other GTC method to move from
///
/// \returns Reference to this object
///
method_gtc& operator=(_Inout_ method_gtc &&other);
/// \name Session management
/// @{
virtual void begin_session(
_In_ DWORD dwFlags,
_In_ const EapAttributes *pAttributeArray,
_In_ HANDLE hTokenImpersonateUser,
_In_opt_ DWORD dwMaxSendPacketSize = MAXDWORD);
/// @}
/// \name Packet processing
/// @{
virtual EapPeerMethodResponseAction process_request_packet(
_In_bytecount_(dwReceivedPacketSize) const void *pReceivedPacket,
_In_ DWORD dwReceivedPacketSize);
virtual void get_response_packet(
_Out_ sanitizing_blob &packet,
_In_opt_ DWORD size_max = MAXDWORD);
/// @}
virtual void get_result(
_In_ EapPeerMethodResultReason reason,
_Out_ EapPeerMethodResult *pResult);
/// \name User Interaction
/// @{
virtual void get_ui_context(_Out_ sanitizing_blob &context_data);
virtual EapPeerMethodResponseAction set_ui_context(
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
_In_ DWORD dwUIContextDataSize);
/// @}
protected:
config_method_eapgtc &m_cfg; ///< Method configuration
credentials_identity &m_cred; ///< Method user credentials
winstd::sanitizing_wstring m_challenge; ///< GTC challenge
winstd::sanitizing_wstring m_response; ///< GTC response
};
/// @}
}

88
lib/GTC/src/Config.cpp Normal file
View File

@@ -0,0 +1,88 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StdAfx.h"
using namespace std;
using namespace winstd;
//////////////////////////////////////////////////////////////////////
// eap::config_method_eapgtc
//////////////////////////////////////////////////////////////////////
eap::config_method_eapgtc::config_method_eapgtc(_In_ module &mod, _In_ unsigned int level) : config_method_with_cred(mod, level)
{
m_cred.reset(new credentials_identity(mod));
}
eap::config_method_eapgtc::config_method_eapgtc(_In_ const config_method_eapgtc &other) :
config_method_with_cred(other)
{
}
eap::config_method_eapgtc::config_method_eapgtc(_Inout_ config_method_eapgtc &&other) :
config_method_with_cred(std::move(other))
{
}
eap::config_method_eapgtc& eap::config_method_eapgtc::operator=(_In_ const config_method_eapgtc &other)
{
if (this != &other)
(config_method_with_cred&)*this = other;
return *this;
}
eap::config_method_eapgtc& eap::config_method_eapgtc::operator=(_Inout_ config_method_eapgtc &&other)
{
if (this != &other)
(config_method_with_cred&&)*this = std::move(other);
return *this;
}
eap::config* eap::config_method_eapgtc::clone() const
{
return new config_method_eapgtc(*this);
}
eap_type_t eap::config_method_eapgtc::get_method_id() const
{
return eap_type_gtc;
}
const wchar_t* eap::config_method_eapgtc::get_method_str() const
{
return L"EAP-GTC";
}
eap::credentials* eap::config_method_eapgtc::make_credentials() const
{
return new eap::credentials_identity(m_module);
}

152
lib/GTC/src/Method.cpp Normal file
View File

@@ -0,0 +1,152 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StdAfx.h"
using namespace std;
using namespace winstd;
//////////////////////////////////////////////////////////////////////
// eap::method_gtc
//////////////////////////////////////////////////////////////////////
eap::method_gtc::method_gtc(_In_ module &mod, _In_ config_method_eapgtc &cfg, _In_ credentials_identity &cred) :
m_cfg(cfg),
m_cred(cred),
method(mod)
{
}
eap::method_gtc::method_gtc(_Inout_ method_gtc &&other) :
m_cfg ( other.m_cfg ),
m_cred ( other.m_cred ),
m_challenge(std::move(other.m_challenge)),
m_response (std::move(other.m_response )),
method (std::move(other ))
{
}
eap::method_gtc& eap::method_gtc::operator=(_Inout_ method_gtc &&other)
{
if (this != std::addressof(other)) {
assert(std::addressof(m_cfg ) == std::addressof(other.m_cfg )); // Move method within same configuration only!
assert(std::addressof(m_cred) == std::addressof(other.m_cred)); // Move method within same credentials only!
(method&)*this = std::move(other );
m_challenge = std::move(other.m_challenge);
m_response = std::move(other.m_response );
}
return *this;
}
void eap::method_gtc::begin_session(
_In_ DWORD dwFlags,
_In_ const EapAttributes *pAttributeArray,
_In_ HANDLE hTokenImpersonateUser,
_In_opt_ DWORD dwMaxSendPacketSize)
{
method::begin_session(dwFlags, pAttributeArray, hTokenImpersonateUser, dwMaxSendPacketSize);
// Presume authentication will fail with generic protocol failure. (Pesimist!!!)
// We will reset once we get get_result(Success) call.
m_cfg.m_last_status = config_method::status_auth_failed;
m_cfg.m_last_msg.clear();
}
EapPeerMethodResponseAction eap::method_gtc::process_request_packet(
_In_bytecount_(dwReceivedPacketSize) const void *pReceivedPacket,
_In_ DWORD dwReceivedPacketSize)
{
assert(pReceivedPacket || dwReceivedPacketSize == 0);
m_module.log_event(&EAPMETHOD_METHOD_HANDSHAKE_START2, event_data((unsigned int)eap_type_gtc), event_data::blank);
// Read authenticator challenge as UTF-8 encoded string.
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)pReceivedPacket, dwReceivedPacketSize, m_challenge);
m_module.log_event(&EAPMETHOD_GTC_RESPONSE_REQ, event_data((unsigned int)eap_type_gtc), event_data::blank);
// User must respond to the challenge.
return EapPeerMethodResponseActionInvokeUI;
}
void eap::method_gtc::get_response_packet(
_Out_ sanitizing_blob &packet,
_In_opt_ DWORD size_max)
{
// Encode GTC response as UTF-8.
sanitizing_string reply_utf8;
WideCharToMultiByte(CP_UTF8, 0, m_response, reply_utf8, NULL, NULL);
if (sizeof(sanitizing_string::value_type)*reply_utf8.length() > size_max)
throw invalid_argument(string_printf(__FUNCTION__ " This method does not support packet fragmentation, but the data size is too big to fit in one packet (packet: %u, maximum: %u).", sizeof(sanitizing_string::value_type)*reply_utf8.length(), size_max));
packet.assign(reply_utf8.begin(), reply_utf8.end());
}
void eap::method_gtc::get_result(
_In_ EapPeerMethodResultReason reason,
_Inout_ EapPeerMethodResult *pResult)
{
assert(pResult);
method::get_result(reason, pResult);
if (reason == EapPeerMethodResultSuccess)
m_cfg.m_last_status = config_method::status_success;
// Always ask EAP host to save the connection data. And it will save it *only* when we report "success".
// Don't worry. EapHost is well aware of failed authentication condition.
pResult->fSaveConnectionData = TRUE;
pResult->fIsSuccess = TRUE;
}
void eap::method_gtc::get_ui_context(_Out_ sanitizing_blob &context_data)
{
// Return authenticator string.
context_data.assign(
reinterpret_cast<sanitizing_blob::const_pointer>(m_challenge.data() ),
reinterpret_cast<sanitizing_blob::const_pointer>(m_challenge.data() + m_challenge.length()));
}
EapPeerMethodResponseAction eap::method_gtc::set_ui_context(
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
_In_ DWORD dwUIContextDataSize)
{
m_module.log_event(&EAPMETHOD_GTC_RESPONSE, event_data((unsigned int)eap_type_gtc), event_data::blank);
// Save GTC response.
m_response.assign(
reinterpret_cast<sanitizing_wstring::const_pointer>(pUIContextData ),
reinterpret_cast<sanitizing_wstring::const_pointer>(pUIContextData + dwUIContextDataSize));
// Send the response.
m_cfg.m_last_status = config_method::status_cred_invalid; // Blame "credentials" if we fail beyond this point.
return EapPeerMethodResponseActionSend;
}

21
lib/GTC/src/StdAfx.cpp Normal file
View File

@@ -0,0 +1,21 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StdAfx.h"

30
lib/GTC/src/StdAfx.h Normal file
View File

@@ -0,0 +1,30 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "../include/Config.h"
#include "../include/Method.h"
#include <WinStd/Hex.h>
#include <Windows.h>
#include <EapHostError.h> // include after Windows.h
#include <RasError.h>

2
lib/GTC_UI/build/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/temp
/*.user

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>..\..\Events\build\temp\Events.$(Platform).$(Configuration).$(PlatformToolset);..\..\WinStd\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{34680813-3A52-46FB-B5A8-1E4BBF770855}</ProjectGuid>
<RootNamespace>GTC_UI</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\Win32.props" />
<Import Project="..\..\..\include\Debug.props" />
<Import Project="GTC_UI.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\x64.props" />
<Import Project="..\..\..\include\Debug.props" />
<Import Project="GTC_UI.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\Win32.props" />
<Import Project="..\..\..\include\Release.props" />
<Import Project="GTC_UI.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\include\x64.props" />
<Import Project="..\..\..\include\Release.props" />
<Import Project="GTC_UI.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<ItemGroup>
<ClInclude Include="..\include\GTC_UI.h" />
<ClInclude Include="..\res\wxGTC_UI.h" />
<ClInclude Include="..\src\StdAfx.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\res\wxGTC_UI.cpp" />
<ClCompile Include="..\src\GTC_UI.cpp" />
<ClCompile Include="..\src\StdAfx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Events\build\Events.vcxproj">
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="..\res\wxGTC_UI.fbp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\StdAfx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\GTC_UI.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\res\wxGTC_UI.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\src\StdAfx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\GTC_UI.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\res\wxGTC_UI.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\res\wxGTC_UI.fbp">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
</Project>

122
lib/GTC_UI/include/GTC_UI.h Normal file
View File

@@ -0,0 +1,122 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "../../EAPBase_UI/include/EAP_UI.h"
#include "../../GTC/include/Config.h"
class wxGTCConfigPanel;
class wxGTCResponseDialog;
class wxGTCResponsePanel;
/// \addtogroup EAPBaseGUI
/// @{
///
/// GTC credential entry panel
///
typedef wxIdentityCredentialsPanel<eap::credentials_identity, wxIdentityCredentialsPanelBase> wxGTCCredentialsPanel;
///
/// GTC credential configuration panel
///
typedef wxEAPCredentialsConfigPanel<eap::credentials_identity, wxGTCCredentialsPanel> wxGTCCredentialsConfigPanel;
/// @}
#pragma once
#include "../res/wxGTC_UI.h"
#include <wx/panel.h>
#include <wx/stattext.h>
#include <string>
#include <Windows.h>
/// \addtogroup EAPBaseGUI
/// @{
///
/// GTC configuration panel
///
class wxGTCConfigPanel : public wxPanel
{
public:
///
/// Constructs a configuration panel
///
wxGTCConfigPanel(const eap::config_provider &prov, eap::config_method_eapgtc &cfg, wxWindow* parent);
///
/// Destructs the configuration panel
///
virtual ~wxGTCConfigPanel();
protected:
/// \cond internal
virtual void OnInitDialog(wxInitDialogEvent& event);
/// \endcond
protected:
wxGTCCredentialsConfigPanel *m_credentials; ///< Credentials configuration panel
};
///
/// GTC challenge/response dialog
///
class wxGTCResponseDialog : public wxEAPGeneralDialog
{
public:
///
/// Constructs a credential dialog
///
wxGTCResponseDialog(const eap::config_provider &prov, wxWindow *parent, wxWindowID id = wxID_ANY, const wxString &title = _("GTC Challenge"), const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
};
///
/// GTC challenge/response panel
///
class wxGTCResponsePanel : public wxGTCResponsePanelBase
{
public:
///
/// Constructs a panel
///
/// \param[inout] response GTC response
/// \param[in ] challenge GTC challenge
/// \param[in ] parent Parent window
///
wxGTCResponsePanel(winstd::sanitizing_wstring &response, const wchar_t *challenge, wxWindow* parent);
protected:
/// \cond internal
virtual bool TransferDataToWindow();
virtual bool TransferDataFromWindow();
/// \endcond
protected:
winstd::sanitizing_wstring &m_response_value; ///< GTC response
};
/// @}

View File

@@ -0,0 +1,63 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include <StdAfx.h>
#include "wxGTC_UI.h"
///////////////////////////////////////////////////////////////////////////
wxGTCResponsePanelBase::wxGTCResponsePanelBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
{
m_sb_response = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("GTC Challenge") ), wxVERTICAL );
wxBoxSizer* sb_response_horiz;
sb_response_horiz = new wxBoxSizer( wxHORIZONTAL );
m_response_icon = new wxStaticBitmap( m_sb_response->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
sb_response_horiz->Add( m_response_icon, 0, wxALL, 5 );
m_sb_response_vert = new wxBoxSizer( wxVERTICAL );
m_response_label = new wxStaticText( m_sb_response->GetStaticBox(), wxID_ANY, _("Please provide your response."), wxDefaultPosition, wxDefaultSize, 0 );
m_response_label->Wrap( 440 );
m_sb_response_vert->Add( m_response_label, 0, wxALL|wxEXPAND, 5 );
wxFlexGridSizer* sb_response_tbl;
sb_response_tbl = new wxFlexGridSizer( 0, 2, 5, 5 );
sb_response_tbl->AddGrowableCol( 1 );
sb_response_tbl->SetFlexibleDirection( wxBOTH );
sb_response_tbl->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_challenge = new wxStaticText( m_sb_response->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_challenge->Wrap( -1 );
m_challenge->SetToolTip( _("Server challenge") );
sb_response_tbl->Add( m_challenge, 0, wxALIGN_CENTER_VERTICAL, 5 );
m_response = new wxTextCtrl( m_sb_response->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_response->SetToolTip( _("Enter your response here") );
sb_response_tbl->Add( m_response, 2, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
m_sb_response_vert->Add( sb_response_tbl, 0, wxEXPAND|wxALL, 5 );
sb_response_horiz->Add( m_sb_response_vert, 1, wxEXPAND, 5 );
m_sb_response->Add( sb_response_horiz, 0, wxEXPAND, 5 );
this->SetSizer( m_sb_response );
this->Layout();
}
wxGTCResponsePanelBase::~wxGTCResponsePanelBase()
{
}

470
lib/GTC_UI/res/wxGTC_UI.fbp Normal file
View File

@@ -0,0 +1,470 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="13" />
<object class="Project" expanded="1">
<property name="class_decoration">; </property>
<property name="code_generation">C++</property>
<property name="disconnect_events">1</property>
<property name="disconnect_mode">source_name</property>
<property name="disconnect_php_events">0</property>
<property name="disconnect_python_events">0</property>
<property name="embedded_files_path">.</property>
<property name="encoding">UTF-8</property>
<property name="event_generation">connect</property>
<property name="file">wxGTC_UI</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="internationalize">1</property>
<property name="name">wxGTC_UI</property>
<property name="namespace"></property>
<property name="path">.</property>
<property name="precompiled_header">#include &lt;StdAfx.h&gt;</property>
<property name="relative_path">1</property>
<property name="skip_lua_events">1</property>
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_enum">1</property>
<property name="use_microsoft_bom">1</property>
<object class="Panel" expanded="1">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
<property name="bg"></property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">wxGTCResponsePanelBase</property>
<property name="pos"></property>
<property name="size">500,-1</property>
<property name="subclass">; </property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<event name="OnAuiFindManager"></event>
<event name="OnAuiPaneButton"></event>
<event name="OnAuiPaneClose"></event>
<event name="OnAuiPaneMaximize"></event>
<event name="OnAuiPaneRestore"></event>
<event name="OnAuiRender"></event>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnInitDialog"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
<property name="label">GTC Challenge</property>
<property name="minimum_size"></property>
<property name="name">m_sb_response</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">protected</property>
<event name="OnUpdateUI"></event>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">sb_response_horiz</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticBitmap" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap">Load From Icon Resource; ; [32; 32]</property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_response_icon</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">m_sb_response_vert</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">protected</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Please provide your response.</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_response_label</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">440</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">0</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">2</property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols">1</property>
<property name="growablerows"></property>
<property name="hgap">5</property>
<property name="minimum_size"></property>
<property name="name">sb_response_tbl</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="rows">0</property>
<property name="vgap">5</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label"></property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_challenge</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip">Server challenge</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">2</property>
<object class="wxTextCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_response</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip">Enter your response here</property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>

53
lib/GTC_UI/res/wxGTC_UI.h Normal file
View File

@@ -0,0 +1,53 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __WXGTC_UI_H__
#define __WXGTC_UI_H__
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/statbmp.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include <wx/panel.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class wxGTCResponsePanelBase
///////////////////////////////////////////////////////////////////////////////
class wxGTCResponsePanelBase : public wxPanel
{
private:
protected:
wxStaticBoxSizer* m_sb_response;
wxStaticBitmap* m_response_icon;
wxBoxSizer* m_sb_response_vert;
wxStaticText* m_response_label;
wxStaticText* m_challenge;
wxTextCtrl* m_response;
public:
wxGTCResponsePanelBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,-1 ), long style = wxTAB_TRAVERSAL );
~wxGTCResponsePanelBase();
};
#endif //__WXGTC_UI_H__

113
lib/GTC_UI/src/GTC_UI.cpp Normal file
View File

@@ -0,0 +1,113 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StdAfx.h"
//////////////////////////////////////////////////////////////////////
// wxGTCConfigPanel
//////////////////////////////////////////////////////////////////////
wxGTCConfigPanel::wxGTCConfigPanel(const eap::config_provider &prov, eap::config_method_eapgtc &cfg, wxWindow* parent) : wxPanel(parent)
{
wxBoxSizer* sb_content;
sb_content = new wxBoxSizer( wxVERTICAL );
m_credentials = new wxGTCCredentialsConfigPanel(prov, cfg, this, _("GTC User ID"));
sb_content->Add(m_credentials, 0, wxEXPAND, 5);
this->SetSizer(sb_content);
this->Layout();
// Connect Events
this->Connect(wxEVT_INIT_DIALOG, wxInitDialogEventHandler(wxGTCConfigPanel::OnInitDialog));
}
wxGTCConfigPanel::~wxGTCConfigPanel()
{
// Disconnect Events
this->Disconnect(wxEVT_INIT_DIALOG, wxInitDialogEventHandler(wxGTCConfigPanel::OnInitDialog));
}
/// \cond internal
void wxGTCConfigPanel::OnInitDialog(wxInitDialogEvent& event)
{
// Forward the event to child panels.
if (m_credentials)
m_credentials->GetEventHandler()->ProcessEvent(event);
}
/// \endcond
//////////////////////////////////////////////////////////////////////
// wxGTCResponseDialog
//////////////////////////////////////////////////////////////////////
wxGTCResponseDialog::wxGTCResponseDialog(const eap::config_provider &prov, wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos, const wxSize &size, long style) :
wxEAPGeneralDialog(parent, id, title, pos, size, style)
{
// Set banner title.
m_banner->m_title->SetLabel(wxString::Format(_("%s Challenge"), wxEAPGetProviderName(prov.m_name)));
}
//////////////////////////////////////////////////////////////////////
// wxGTCResponsePanel
//////////////////////////////////////////////////////////////////////
wxGTCResponsePanel::wxGTCResponsePanel(winstd::sanitizing_wstring &response, const wchar_t *challenge, wxWindow* parent) :
wxGTCResponsePanelBase(parent),
m_response_value(response)
{
// Load and set icon.
winstd::library lib_shell32;
if (lib_shell32.load(_T("shell32.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE))
m_response_icon->SetIcon(wxLoadIconFromResource(lib_shell32, MAKEINTRESOURCE(24)));
// Set challenge label.
m_challenge->SetLabelText(challenge);
m_challenge->Wrap(200);
this->Layout();
}
/// \cond internal
bool wxGTCResponsePanel::TransferDataToWindow()
{
m_response->SetValue(m_response_value.c_str());
return wxGTCResponsePanelBase::TransferDataToWindow();
}
bool wxGTCResponsePanel::TransferDataFromWindow()
{
wxCHECK(wxGTCResponsePanelBase::TransferDataFromWindow(), false);
m_response_value = m_response->GetValue();
return true;
}
/// \endcond

21
lib/GTC_UI/src/StdAfx.cpp Normal file
View File

@@ -0,0 +1,21 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StdAfx.h"

25
lib/GTC_UI/src/StdAfx.h Normal file
View File

@@ -0,0 +1,25 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define _CRT_SECURE_NO_WARNINGS // Prevent warnings from wxWidgets headers
#include "../include/GTC_UI.h"

View File

@@ -84,6 +84,7 @@
<ClInclude Include="..\include\Method.h" /> <ClInclude Include="..\include\Method.h" />
<ClInclude Include="..\include\Module.h" /> <ClInclude Include="..\include\Module.h" />
<ClInclude Include="..\include\TTLS.h" /> <ClInclude Include="..\include\TTLS.h" />
<ClInclude Include="..\include\UIContext.h" />
<ClInclude Include="..\src\StdAfx.h" /> <ClInclude Include="..\src\StdAfx.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -97,6 +98,7 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\UIContext.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Events\build\Events.vcxproj"> <ProjectReference Include="..\..\Events\build\Events.vcxproj">

View File

@@ -26,6 +26,9 @@
<ClInclude Include="..\include\Module.h"> <ClInclude Include="..\include\Module.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\include\UIContext.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\TTLS.h"> <ClInclude Include="..\include\TTLS.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@@ -46,5 +49,8 @@
<ClCompile Include="..\src\Module.cpp"> <ClCompile Include="..\src\Module.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\UIContext.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -18,8 +18,6 @@
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>. along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/ */
#pragma once
/// \addtogroup EAPBaseMethod /// \addtogroup EAPBaseMethod
/// @{ /// @{
#ifndef EAP_INNER_EAPHOST #ifndef EAP_INNER_EAPHOST

View File

@@ -0,0 +1,104 @@
/*
Copyright 2015-2017 Amebis
Copyright 2016-2017 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
namespace eap
{
class ui_context_ttls;
}
#pragma once
#include "TTLS.h"
#include "../../EAPBase/include/UIContext.h"
namespace eap
{
/// \addtogroup EAPBaseUICtx
/// @{
///
/// EAP-TTLS UI context
///
class ui_context_ttls : public ui_context
{
public:
///
/// Constructs context
///
/// \param[in] mod EAP module to use for global services
/// \param[in] cfg Connection configuration
/// \param[in] cred Connection credentials
///
ui_context_ttls(_In_ module &mod, _In_ config_connection &cfg, _In_ credentials_connection &cred);
///
/// Copies context
///
/// \param[in] other Credentials to copy from
///
ui_context_ttls(_In_ const ui_context_ttls &other);
///
/// Moves context
///
/// \param[in] other Credentials to move from
///
ui_context_ttls(_Inout_ ui_context_ttls &&other);
///
/// Copies context
///
/// \param[in] other Credentials to copy from
///
/// \returns Reference to this object
///
ui_context_ttls& operator=(_In_ const ui_context_ttls &other);
///
/// Moves context
///
/// \param[in] other Configuration to move from
///
/// \returns Reference to this object
///
ui_context_ttls& operator=(_Inout_ ui_context_ttls &&other);
///
/// Clones this object
///
/// \returns Pointer to cloned object with identical data
///
virtual config* clone() const;
/// \name BLOB management
/// @{
virtual void operator<<(_Inout_ cursor_out &cursor) const;
virtual size_t get_pk_size() const;
virtual void operator>>(_Inout_ cursor_in &cursor);
/// @}
public:
sanitizing_blob m_data; ///< Context data
};
/// @}
}

View File

@@ -268,6 +268,7 @@ eap::config_method* eap::config_method_ttls::make_config_method(_In_ winstd::eap
case eap_type_legacy_pap : return new config_method_pap (m_module, m_level + 1); case eap_type_legacy_pap : return new config_method_pap (m_module, m_level + 1);
case eap_type_legacy_mschapv2: return new config_method_mschapv2 (m_module, m_level + 1); case eap_type_legacy_mschapv2: return new config_method_mschapv2 (m_module, m_level + 1);
case eap_type_mschapv2 : return new config_method_eapmschapv2(m_module, m_level + 1); case eap_type_mschapv2 : return new config_method_eapmschapv2(m_module, m_level + 1);
case eap_type_gtc : return new config_method_eapgtc (m_module, m_level + 1);
#if EAP_INNER_EAPHOST #if EAP_INNER_EAPHOST
default : return new config_method_eaphost (m_module, m_level + 1); // EapHost peer method handles all other method types default : return new config_method_eaphost (m_module, m_level + 1); // EapHost peer method handles all other method types
#else #else
@@ -282,6 +283,7 @@ eap::config_method* eap::config_method_ttls::make_config_method(_In_ const wchar
if (_wcsicmp(eap_type, L"PAP" ) == 0) return new config_method_pap (m_module, m_level + 1); if (_wcsicmp(eap_type, L"PAP" ) == 0) return new config_method_pap (m_module, m_level + 1);
else if (_wcsicmp(eap_type, L"MSCHAPv2" ) == 0) return new config_method_mschapv2 (m_module, m_level + 1); else if (_wcsicmp(eap_type, L"MSCHAPv2" ) == 0) return new config_method_mschapv2 (m_module, m_level + 1);
else if (_wcsicmp(eap_type, L"EAP-MSCHAPv2") == 0) return new config_method_eapmschapv2(m_module, m_level + 1); else if (_wcsicmp(eap_type, L"EAP-MSCHAPv2") == 0) return new config_method_eapmschapv2(m_module, m_level + 1);
else if (_wcsicmp(eap_type, L"EAP-GTC" ) == 0) return new config_method_eapgtc (m_module, m_level + 1);
#if EAP_INNER_EAPHOST #if EAP_INNER_EAPHOST
else if (_wcsicmp(eap_type, L"EapHost" ) == 0) return new config_method_eaphost (m_module, m_level + 1); else if (_wcsicmp(eap_type, L"EapHost" ) == 0) return new config_method_eaphost (m_module, m_level + 1);
#endif #endif

View File

@@ -256,6 +256,10 @@ EAP_SESSION_HANDLE eap::peer_ttls::begin_session(
new method_eapmsg (*this, cred_inner->get_identity().c_str(), new method_eapmsg (*this, cred_inner->get_identity().c_str(),
new method_eap (*this, eap_type_mschapv2, new method_eap (*this, eap_type_mschapv2,
new method_mschapv2(*this, dynamic_cast<config_method_mschapv2&>(*cfg_inner), dynamic_cast<credentials_pass&>(*cred_inner))))); break; new method_mschapv2(*this, dynamic_cast<config_method_mschapv2&>(*cfg_inner), dynamic_cast<credentials_pass&>(*cred_inner))))); break;
case eap_type_gtc : meth_inner.reset(
new method_eapmsg (*this, cred_inner->get_identity().c_str(),
new method_eap (*this, eap_type_gtc,
new method_gtc (*this, dynamic_cast<config_method_eapgtc&>(*cfg_inner), dynamic_cast<credentials_identity&>(*cred_inner))))); break;
default: throw invalid_argument(__FUNCTION__ " Unsupported inner authentication method."); default: throw invalid_argument(__FUNCTION__ " Unsupported inner authentication method.");
} }
} }
@@ -363,11 +367,11 @@ void eap::peer_ttls::get_ui_context(
auto s = static_cast<session*>(hSession); auto s = static_cast<session*>(hSession);
// Get context data from method. // Get context data from method.
sanitizing_blob context_data; ui_context_ttls ctx(*this, s->m_cfg, s->m_cred);
s->m_method->get_ui_context(context_data); s->m_method->get_ui_context(ctx.m_data);
// Pack data. // Pack context data.
pack(context_data, ppUIContextData, pdwUIContextDataSize); pack(ctx, ppUIContextData, pdwUIContextDataSize);
if (s->m_blob_ui_ctx) if (s->m_blob_ui_ctx)
free_memory(s->m_blob_ui_ctx); free_memory(s->m_blob_ui_ctx);
s->m_blob_ui_ctx = *ppUIContextData; s->m_blob_ui_ctx = *ppUIContextData;

View File

@@ -26,6 +26,7 @@
#include "../include/Credentials.h" #include "../include/Credentials.h"
#include "../include/Method.h" #include "../include/Method.h"
#include "../include/Module.h" #include "../include/Module.h"
#include "../include/UIContext.h"
#include "../../PAP/include/Config.h" #include "../../PAP/include/Config.h"
#include "../../PAP/include/Method.h" #include "../../PAP/include/Method.h"
@@ -34,6 +35,9 @@
#include "../../MSCHAPv2/include/Method.h" #include "../../MSCHAPv2/include/Method.h"
#include "../../MSCHAPv2/include/MSCHAPv2.h" #include "../../MSCHAPv2/include/MSCHAPv2.h"
#include "../../GTC/include/Config.h"
#include "../../GTC/include/Method.h"
#include "../../EapHost/include/Config.h" #include "../../EapHost/include/Config.h"
#include "../../EapHost/include/Method.h" #include "../../EapHost/include/Method.h"

View File

@@ -0,0 +1,97 @@
/*
Copyright 2015-2016 Amebis
Copyright 2016 GÉANT
This file is part of GÉANTLink.
GÉANTLink is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GÉANTLink is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GÉANTLink. If not, see <http://www.gnu.org/licenses/>.
*/
#include "StdAfx.h"
using namespace std;
using namespace winstd;
//////////////////////////////////////////////////////////////////////
// eap::ui_context_ttls
//////////////////////////////////////////////////////////////////////
eap::ui_context_ttls::ui_context_ttls(_In_ module &mod, _In_ config_connection &cfg, _In_ credentials_connection &cred) :
ui_context(mod, cfg, cred)
{
}
eap::ui_context_ttls::ui_context_ttls(_In_ const ui_context_ttls &other) :
ui_context(other)
{
}
eap::ui_context_ttls::ui_context_ttls(_Inout_ ui_context_ttls &&other) :
m_data (std::move(other.m_data)),
ui_context(std::move(other ))
{
}
eap::ui_context_ttls& eap::ui_context_ttls::operator=(_In_ const ui_context_ttls &other)
{
if (this != &other) {
(ui_context&)*this = other;
m_data = other.m_data;
}
return *this;
}
eap::ui_context_ttls& eap::ui_context_ttls::operator=(_Inout_ ui_context_ttls &&other)
{
if (this != &other) {
(ui_context&)*this = std::move(other );
m_data = std::move(other.m_data);
}
return *this;
}
eap::config* eap::ui_context_ttls::clone() const
{
return new ui_context_ttls(*this);
}
void eap::ui_context_ttls::operator<<(_Inout_ cursor_out &cursor) const
{
ui_context::operator<<(cursor);
cursor << m_data;
}
size_t eap::ui_context_ttls::get_pk_size() const
{
return
ui_context::get_pk_size() +
pksizeof(m_data);
}
void eap::ui_context_ttls::operator>>(_Inout_ cursor_in &cursor)
{
ui_context::operator>>(cursor);
cursor >> m_data;
}

View File

@@ -31,6 +31,7 @@ class wxTTLSConfigWindow;
#include "../../EapHost/include/Config.h" #include "../../EapHost/include/Config.h"
#include "../../PAP/include/Config.h" #include "../../PAP/include/Config.h"
#include "../../MSCHAPv2/include/Config.h" #include "../../MSCHAPv2/include/Config.h"
#include "../../GTC/include/Config.h"
#include <WinStd/Win.h> #include <WinStd/Win.h>
@@ -107,6 +108,7 @@ protected:
eap::config_method_pap m_cfg_pap; ///< PAP configuration eap::config_method_pap m_cfg_pap; ///< PAP configuration
eap::config_method_mschapv2 m_cfg_mschapv2; ///< MSCHAPv2 configuration eap::config_method_mschapv2 m_cfg_mschapv2; ///< MSCHAPv2 configuration
eap::config_method_eapmschapv2 m_cfg_eapmschapv2; ///< EAP-MSCHAPv2 configuration eap::config_method_eapmschapv2 m_cfg_eapmschapv2; ///< EAP-MSCHAPv2 configuration
eap::config_method_eapgtc m_cfg_eapgtc; ///< EAP-GTC configuration
#if EAP_INNER_EAPHOST #if EAP_INNER_EAPHOST
eap::config_method_eaphost m_cfg_eaphost; ///< Inner EAP configuration eap::config_method_eaphost m_cfg_eaphost; ///< Inner EAP configuration
#endif #endif

View File

@@ -298,6 +298,7 @@ void eap::peer_ttls_ui::invoke_identity_ui(
case eap_type_legacy_pap : panel = new wxPAPCredentialsPanel (*cfg_prov, *dynamic_cast<const eap::config_method_pap *>(cfg_method->m_inner.get()), *dynamic_cast<eap::credentials_pass *>(cred->m_inner.get()), &dlg, false); break; case eap_type_legacy_pap : panel = new wxPAPCredentialsPanel (*cfg_prov, *dynamic_cast<const eap::config_method_pap *>(cfg_method->m_inner.get()), *dynamic_cast<eap::credentials_pass *>(cred->m_inner.get()), &dlg, false); break;
case eap_type_legacy_mschapv2: panel = new wxMSCHAPv2CredentialsPanel(*cfg_prov, *dynamic_cast<const eap::config_method_mschapv2 *>(cfg_method->m_inner.get()), *dynamic_cast<eap::credentials_pass *>(cred->m_inner.get()), &dlg, false); break; case eap_type_legacy_mschapv2: panel = new wxMSCHAPv2CredentialsPanel(*cfg_prov, *dynamic_cast<const eap::config_method_mschapv2 *>(cfg_method->m_inner.get()), *dynamic_cast<eap::credentials_pass *>(cred->m_inner.get()), &dlg, false); break;
case eap_type_mschapv2 : panel = new wxMSCHAPv2CredentialsPanel(*cfg_prov, *dynamic_cast<const eap::config_method_eapmschapv2*>(cfg_method->m_inner.get()), *dynamic_cast<eap::credentials_pass *>(cred->m_inner.get()), &dlg, false); break; case eap_type_mschapv2 : panel = new wxMSCHAPv2CredentialsPanel(*cfg_prov, *dynamic_cast<const eap::config_method_eapmschapv2*>(cfg_method->m_inner.get()), *dynamic_cast<eap::credentials_pass *>(cred->m_inner.get()), &dlg, false); break;
case eap_type_gtc : panel = new wxGTCCredentialsPanel (*cfg_prov, *dynamic_cast<const eap::config_method_eapgtc *>(cfg_method->m_inner.get()), *dynamic_cast<eap::credentials_identity*>(cred->m_inner.get()), &dlg, false); break;
default : wxLogError("Unsupported inner authentication method."); default : wxLogError("Unsupported inner authentication method.");
} }
panel->SetRemember(src_inner == eap::credentials::source_storage); panel->SetRemember(src_inner == eap::credentials::source_storage);
@@ -389,13 +390,109 @@ void eap::peer_ttls_ui::invoke_interactive_ui(
_Inout_ BYTE **ppDataFromInteractiveUI, _Inout_ BYTE **ppDataFromInteractiveUI,
_Inout_ DWORD *pdwDataFromInteractiveUISize) _Inout_ DWORD *pdwDataFromInteractiveUISize)
{ {
UNREFERENCED_PARAMETER(pUIContextData); // Unpack context data.
UNREFERENCED_PARAMETER(dwUIContextDataSize); config_connection cfg(*this);
UNREFERENCED_PARAMETER(ppDataFromInteractiveUI); credentials_connection cred(*this, cfg);
UNREFERENCED_PARAMETER(pdwDataFromInteractiveUISize); ui_context_ttls ctx(*this, cfg, cred);
unpack(ctx, pUIContextData, dwUIContextDataSize);
InitCommonControls(); // Look-up the provider.
MessageBox(hwndParent, _T(PRODUCT_NAME_STR) _T(" interactive UI goes here!"), _T(PRODUCT_NAME_STR) _T(" Prompt"), MB_OK); config_provider *cfg_prov;
config_method_ttls *cfg_method;
for (auto _cfg_prov = cfg.m_providers.begin(), cfg_prov_end = cfg.m_providers.end();; ++_cfg_prov) {
if (_cfg_prov != cfg_prov_end) {
if (cred.match(*_cfg_prov)) {
// Matching provider found.
if (_cfg_prov->m_methods.empty())
throw invalid_argument(string_printf(__FUNCTION__ " %ls provider has no methods.", _cfg_prov->get_id().c_str()));
cfg_prov = &*_cfg_prov;
cfg_method = dynamic_cast<config_method_ttls*>(_cfg_prov->m_methods.front().get());
break;
}
} else
throw invalid_argument(string_printf(__FUNCTION__ " Credentials do not match to any provider within this connection configuration (provider: %ls).", cred.get_id().c_str()));
}
#if EAP_INNER_EAPHOST
auto cfg_inner_eaphost = dynamic_cast<config_method_eaphost*>(cfg_method->m_inner.get());
if (!cfg_inner_eaphost)
#endif
{
int result;
{
// Initialize application.
wxInitializerPeer init(m_instance);
{
// Create wxWidget-approved parent window.
wxWindow parent;
parent.SetHWND((WXHWND)(hwndParent ? hwndParent : GetForegroundWindow()));
parent.AdoptAttributesFromHWND();
wxTopLevelWindows.Append(&parent);
{
sanitizing_wstring
challenge(reinterpret_cast<sanitizing_wstring::const_pointer>(ctx.m_data.data()), ctx.m_data.size()/sizeof(sanitizing_wstring::value_type)),
response;
// Build dialog to prompt for response.
wxGTCResponseDialog dlg(*cfg_prov, &parent);
auto panel = new wxGTCResponsePanel(response, challenge.c_str(), &dlg);
dlg.AddContent(panel);
// Update dialog layout.
dlg.Layout();
dlg.GetSizer()->Fit(&dlg);
// Centre and display dialog.
dlg.Centre(wxBOTH);
if ((result = dlg.ShowModal()) == wxID_OK) {
// Save response.
ctx.m_data.assign(
reinterpret_cast<sanitizing_blob::const_pointer>(response.data() ),
reinterpret_cast<sanitizing_blob::const_pointer>(response.data() + response.length()));
}
}
wxTopLevelWindows.DeleteObject(&parent);
parent.SetHWND((WXHWND)NULL);
}
}
if (result != wxID_OK)
throw win_runtime_error(ERROR_CANCELLED, __FUNCTION__ " Cancelled.");
}
#if EAP_INNER_EAPHOST
else {
// EapHost inner method
DWORD dwSizeofDataFromInteractiveUI;
BYTE *pDataFromInteractiveUI;
winstd::eap_error error;
DWORD dwResult = EapHostPeerInvokeInteractiveUI(
hwndParent,
(DWORD)ctx.m_data.size(),
ctx.m_data.data(),
&dwSizeofDataFromInteractiveUI,
&pDataFromInteractiveUI,
&error._Myptr);
if (dwResult == ERROR_SUCCESS) {
// Inner EAP method provided response.
ctx.m_data.assign(pDataFromInteractiveUI, pDataFromInteractiveUI + dwSizeofDataFromInteractiveUI);
} else if (dwResult == ERROR_CANCELLED) {
// Not really an error.
throw win_runtime_error(ERROR_CANCELLED, __FUNCTION__ " Cancelled.");
} else if (error) {
wxLogError(_("Invoking EAP interactive UI failed (error %u, %s, %s)."), error->dwWinError, error->pRootCauseString, error->pRepairString);
throw eap_runtime_error(*error , __FUNCTION__ " EapHostPeerInvokeInteractiveUI failed.");
} else {
wxLogError(_("Invoking EAP interactive UI failed (error %u)."), dwResult);
throw win_runtime_error(dwResult, __FUNCTION__ " EapHostPeerInvokeInteractiveUI failed.");
}
}
#endif
// Pack output data.
pack(ctx.m_data, ppDataFromInteractiveUI, pdwDataFromInteractiveUISize);
} }

View File

@@ -28,8 +28,10 @@
#include "../../EapHost_UI/include/EapHost_UI.h" #include "../../EapHost_UI/include/EapHost_UI.h"
#include "../../PAP_UI/include/PAP_UI.h" #include "../../PAP_UI/include/PAP_UI.h"
#include "../../MSCHAPv2_UI/include/MSCHAPv2_UI.h" #include "../../MSCHAPv2_UI/include/MSCHAPv2_UI.h"
#include "../../GTC_UI/include/GTC_UI.h"
#include "../../EapHost/include/Credentials.h" #include "../../EapHost/include/Credentials.h"
#include "../../TTLS/include/UIContext.h"
#include <wxex/common.h> #include <wxex/common.h>

View File

@@ -103,6 +103,7 @@ wxTTLSConfigWindow::wxTTLSConfigWindow(eap::config_provider &prov, eap::config_m
m_cfg_pap (cfg.m_module, cfg.m_level + 1), m_cfg_pap (cfg.m_module, cfg.m_level + 1),
m_cfg_mschapv2 (cfg.m_module, cfg.m_level + 1), m_cfg_mschapv2 (cfg.m_module, cfg.m_level + 1),
m_cfg_eapmschapv2(cfg.m_module, cfg.m_level + 1), m_cfg_eapmschapv2(cfg.m_module, cfg.m_level + 1),
m_cfg_eapgtc (cfg.m_module, cfg.m_level + 1),
#if EAP_INNER_EAPHOST #if EAP_INNER_EAPHOST
m_cfg_eaphost (cfg.m_module, cfg.m_level + 1), m_cfg_eaphost (cfg.m_module, cfg.m_level + 1),
#endif #endif
@@ -127,6 +128,8 @@ wxTTLSConfigWindow::wxTTLSConfigWindow(eap::config_provider &prov, eap::config_m
m_inner_type->AddPage(panel_mschapv2, _("MSCHAPv2")); m_inner_type->AddPage(panel_mschapv2, _("MSCHAPv2"));
wxMSCHAPv2ConfigPanel *panel_eapmschapv2 = new wxMSCHAPv2ConfigPanel(m_prov, m_cfg_eapmschapv2, m_inner_type); wxMSCHAPv2ConfigPanel *panel_eapmschapv2 = new wxMSCHAPv2ConfigPanel(m_prov, m_cfg_eapmschapv2, m_inner_type);
m_inner_type->AddPage(panel_eapmschapv2, _("EAP-MSCHAPv2")); m_inner_type->AddPage(panel_eapmschapv2, _("EAP-MSCHAPv2"));
wxGTCConfigPanel *panel_eapgtc = new wxGTCConfigPanel(m_prov, m_cfg_eapgtc, m_inner_type);
m_inner_type->AddPage(panel_eapgtc, _("EAP-GTC"));
#if EAP_INNER_EAPHOST #if EAP_INNER_EAPHOST
wxEapHostConfigPanel *panel_eaphost = new wxEapHostConfigPanel(m_prov, m_cfg_eaphost, m_inner_type); wxEapHostConfigPanel *panel_eaphost = new wxEapHostConfigPanel(m_prov, m_cfg_eaphost, m_inner_type);
m_inner_type->AddPage(panel_eaphost, _("Other EAP methods...")); m_inner_type->AddPage(panel_eaphost, _("Other EAP methods..."));
@@ -198,6 +201,11 @@ bool wxTTLSConfigWindow::TransferDataToWindow()
m_inner_type->SetSelection(2); // 2=EAP-MSCHAPv2 m_inner_type->SetSelection(2); // 2=EAP-MSCHAPv2
break; break;
case winstd::eap_type_gtc:
m_cfg_eapgtc = dynamic_cast<eap::config_method_eapgtc&>(*cfg_ttls.m_inner);
m_inner_type->SetSelection(3); // 3=EAP-GTC
break;
default: default:
wxFAIL_MSG(wxT("Unsupported inner authentication method type.")); wxFAIL_MSG(wxT("Unsupported inner authentication method type."));
} }
@@ -206,7 +214,7 @@ bool wxTTLSConfigWindow::TransferDataToWindow()
else { else {
// EapHost inner method // EapHost inner method
m_cfg_eaphost = *cfg_inner_eaphost; m_cfg_eaphost = *cfg_inner_eaphost;
m_inner_type->SetSelection(3); // 3=EapHost m_inner_type->SetSelection(4); // 4=EapHost
} }
#endif #endif
@@ -237,8 +245,12 @@ bool wxTTLSConfigWindow::TransferDataFromWindow()
cfg_ttls.m_inner.reset(new eap::config_method_eapmschapv2(m_cfg_eapmschapv2)); cfg_ttls.m_inner.reset(new eap::config_method_eapmschapv2(m_cfg_eapmschapv2));
break; break;
case 3: // 3=EAP-GTC
cfg_ttls.m_inner.reset(new eap::config_method_eapgtc(m_cfg_eapgtc));
break;
#if EAP_INNER_EAPHOST #if EAP_INNER_EAPHOST
case 3: // 3=EapHost case 4: // 4=EapHost
cfg_ttls.m_inner.reset(new eap::config_method_eaphost(m_cfg_eaphost)); cfg_ttls.m_inner.reset(new eap::config_method_eaphost(m_cfg_eaphost));
break; break;
#endif #endif