Compare commits
146 Commits
Author | SHA1 | Date | |
---|---|---|---|
bbd5aa1490 | |||
6fb5cb88d2 | |||
a459823beb | |||
9058dc75d9 | |||
ab3ffc63f7 | |||
24a02e5adf | |||
b2d939011f | |||
2ce0c5d259 | |||
f3cc5b6064 | |||
8a093c645e | |||
35fd9fbbac | |||
dfd26f214d | |||
009cd36fe2 | |||
592d53d8bc | |||
e10923c7c2 | |||
d66ad98a49 | |||
2e8bd4403f | |||
40ee89a04a | |||
0e69fb175c | |||
8233992b76 | |||
f88b966762 | |||
5a82dc2a25 | |||
638f2cf18d | |||
38a7354ad9 | |||
672afbb918 | |||
ec908bbfe9 | |||
3396f9cf97 | |||
f6ce76d384 | |||
ee7a8ce6d1 | |||
a53ceba97e | |||
4d7538937b | |||
10297c7ab3 | |||
c7f1a66a4a | |||
c2426f26fd | |||
6069a25c75 | |||
f07eed7882 | |||
401b4cdc28 | |||
1879d00bf9 | |||
0602285220 | |||
1fe80bd0e0 | |||
b3e5c93f4b | |||
366e08899b | |||
d5142aaf15 | |||
0b3e340dbe | |||
b655bd7d0b | |||
daeca67bee | |||
d2b66563e1 | |||
0d21610322 | |||
f75e72757e | |||
2e81aee089 | |||
7a6b760845 | |||
5fd1c3b60e | |||
e2c9914ef9 | |||
34a8f1b155 | |||
47f0a41fb6 | |||
352ad4f9d2 | |||
fc40c44612 | |||
9846d29d76 | |||
502f26059d | |||
d0e363b7c0 | |||
6259a80cf4 | |||
83f975861c | |||
7593a34ff4 | |||
8aae24d63d | |||
dd29b58da6 | |||
864b8177e5 | |||
8de444dadf | |||
1db7e953e8 | |||
8605dcc751 | |||
9210f2a711 | |||
5d5e14b724 | |||
1d583c39c9 | |||
9926cd19ee | |||
daea1bba62 | |||
f05f8dab76 | |||
ba11abff1d | |||
22f578b451 | |||
7bc76ac54c | |||
5e35c5769a | |||
3f888dd781 | |||
5b065bce3d | |||
d8a1fe95aa | |||
f57ee6c0f8 | |||
3364719ba1 | |||
e46739a510 | |||
adc860fa6e | |||
d4cc3053a6 | |||
38c6189d5f | |||
bf4c4d846e | |||
5040ebba8e | |||
4598528765 | |||
8fbcf27f6a | |||
48d46617d2 | |||
e7d5ecb50b | |||
6a77f3f7b3 | |||
a4673f9fb9 | |||
c84a8b5a70 | |||
31a3b67cba | |||
b44cb66b2a | |||
690a6d54d2 | |||
e7e57abf52 | |||
bda31a487f | |||
2908bc31a3 | |||
66dd2bf283 | |||
527d4271b1 | |||
36f6d04906 | |||
e8758e9c41 | |||
058ec398e6 | |||
5b79f5d849 | |||
6f049d2692 | |||
964bf4032a | |||
87e2296dde | |||
6284b6c29e | |||
260b78025c | |||
6b81ea51d3 | |||
a07eb48174 | |||
0ec0e3579e | |||
a78901cb63 | |||
27ae8baf3a | |||
dd3da2f41a | |||
6f3aa650b6 | |||
191e4abd9c | |||
386d852859 | |||
7977d04281 | |||
b632f0202f | |||
57372b8f95 | |||
172cd18c16 | |||
cfc241d3a6 | |||
4c1d4b0580 | |||
d508a6c398 | |||
f9083dc300 | |||
0b358acba7 | |||
cbe831f9f6 | |||
d7795ef054 | |||
9b41c73e9d | |||
e8d231d360 | |||
f6522b8fa7 | |||
25934dd8c7 | |||
4b4578fd59 | |||
4ec366b23b | |||
4b40c4d217 | |||
a2a87ddc4c | |||
bd73ea7914 | |||
5fada1b6a9 | |||
5f28fc873c | |||
2cb9453209 |
@@ -30,26 +30,26 @@
|
||||
<ProjectGuid>{2D3CE079-7EB1-4F47-B79E-F0310671ECCB}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>CredWrite</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -57,21 +57,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -156,7 +156,7 @@
|
||||
<ProjectReference Include="..\lib\TLS\build\TLS.vcxproj">
|
||||
<Project>{4d40cb8a-812e-4f12-b23a-31af743878e8}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-16.0.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
@@ -116,7 +116,8 @@ static int CredWrite()
|
||||
}
|
||||
|
||||
|
||||
int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
|
||||
_Use_decl_annotations_
|
||||
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hPrevInstance);
|
||||
UNREFERENCED_PARAMETER(lpCmdLine);
|
||||
|
@@ -1,7 +1,9 @@
|
||||
# CredWrite
|
||||
|
||||
Imports given credentials to Windows Credential Manager for GÉANTLink use
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
CredWrite <username> <password> [<realm> [level]]
|
||||
```
|
||||
@@ -13,8 +15,15 @@ CredWrite <username> <password> [<realm> [level]]
|
||||
|
||||
The credentials are stored to Windows Credential Manager in invoking user's roaming profile.
|
||||
|
||||
Return codes:
|
||||
### Return codes
|
||||
|
||||
- -1 = Invalid parameters
|
||||
- 0 = Success
|
||||
- 1 = Error parsing command line
|
||||
- 2 = Error encrypting password or writing credentials
|
||||
|
||||
### Example
|
||||
|
||||
```
|
||||
CredWrite dXNlckBjb250b3NvLmNvbQ== cGFzc3dvcmQxMjM= urn:RFC4282:realm:contoso.com 1
|
||||
```
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
#include <Windows.h>
|
||||
#include <eaptypes.h> // Must include after <Windows.h>
|
||||
#include <shellapi.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#include <memory>
|
||||
|
1
Doxyfile
1
Doxyfile
@@ -794,6 +794,7 @@ EXCLUDE = \
|
||||
EventMonitor\res \
|
||||
lib\EAPBase_UI\res \
|
||||
lib\EapHost_UI\res \
|
||||
lib\GTC_UI\res \
|
||||
lib\TLS_UI\res \
|
||||
lib\TTLS_UI\res \
|
||||
lib\WinStd \
|
||||
|
@@ -29,26 +29,26 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{331B6077-E3E2-4867-B93E-9D3F57280DE7}</ProjectGuid>
|
||||
<RootNamespace>EAPTTLS</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -56,21 +56,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -147,6 +147,9 @@
|
||||
<ProjectReference Include="..\..\lib\Events\build\Events.vcxproj">
|
||||
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\lib\GTC\build\GTC.vcxproj">
|
||||
<Project>{114a70bb-8698-4a0c-8c90-58f22edd8129}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\lib\MSCHAPv2\build\MSCHAPv2.vcxproj">
|
||||
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
|
||||
</ProjectReference>
|
||||
@@ -159,7 +162,7 @@
|
||||
<ProjectReference Include="..\..\lib\TTLS\build\TTLS.vcxproj">
|
||||
<Project>{ee0ef0d9-a475-4038-8637-5754724f65b0}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
||||
<ProjectReference Include="..\..\lib\WinStd\build\WinStd-16.0.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
@@ -29,26 +29,26 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{DD7A97CA-F18E-43B7-95C4-D06E6A291624}</ProjectGuid>
|
||||
<RootNamespace>EAPTTLSUI</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -56,21 +56,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -153,6 +153,12 @@
|
||||
<ProjectReference Include="..\..\lib\Events\build\Events.vcxproj">
|
||||
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
||||
</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">
|
||||
<Project>{86a6d6a0-4b7d-4134-be81-a5755c77584d}</Project>
|
||||
</ProjectReference>
|
||||
@@ -177,10 +183,10 @@
|
||||
<ProjectReference Include="..\..\lib\TTLS_UI\build\TTLS_UI.vcxproj">
|
||||
<Project>{42f0f0f4-c928-4860-a4e4-94991c2c3d90}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
||||
<ProjectReference Include="..\..\lib\WinStd\build\WinStd-16.0.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\lib\wxExtend\build\wxExtendLib-15.0.vcxproj">
|
||||
<ProjectReference Include="..\..\lib\wxExtend\build\wxExtendLib-16.0.vcxproj">
|
||||
<Project>{d3e29951-d9f5-486d-a167-20ae8e90b1fa}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -903,7 +903,7 @@ msgstr "Използвай &празна външна самоличност"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Пропусни моето потребителско име и използвай само @mydomain.org"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Translators:
|
||||
# eduki <ecercos@xtec.cat>, 2017
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
# eduki <ecercos@xtec.cat>, 2018
|
||||
# jmontane, 2019
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@@ -8,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Simon Rozman <simon@rozman.si>, 2018\n"
|
||||
"Last-Translator: jmontane, 2019\n"
|
||||
"Language-Team: Catalan (Spain) (https://www.transifex.com/eduroam_devel/teams/11799/ca_ES/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -116,13 +117,13 @@ msgstr "Ha fallat l'esborrat de credencials (error %u)."
|
||||
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:854
|
||||
#, c-format
|
||||
msgid "(error %u)"
|
||||
msgstr ""
|
||||
msgstr "(error %u)"
|
||||
|
||||
#: master/lib/EAPBase_UI/include/EAP_UI.h:859
|
||||
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:792
|
||||
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:858
|
||||
msgid "(error)"
|
||||
msgstr ""
|
||||
msgstr "(error)"
|
||||
|
||||
#: master/lib/EAPBase_UI/include/EAP_UI.h:870
|
||||
#: master/lib/EAPBase_UI/include/EAP_UI.h:879
|
||||
@@ -143,7 +144,7 @@ msgstr "(buit)"
|
||||
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:869
|
||||
#: ver1.1/lib/EAPBase_UI/include/EAP_UI.h:878
|
||||
msgid "(blank ID)"
|
||||
msgstr ""
|
||||
msgstr "(ID buit)"
|
||||
|
||||
#: master/lib/EAPBase_UI/include/EAP_UI.h:919
|
||||
#: ver1.0/lib/EAPBase_UI/include/EAP_UI.h:854
|
||||
@@ -173,7 +174,7 @@ msgstr "+"
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:38
|
||||
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:38
|
||||
msgid "Adds new provider"
|
||||
msgstr "Afegir nou proveidor"
|
||||
msgstr "Afegeix un proveïdor nou"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:42
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:42
|
||||
@@ -185,7 +186,7 @@ msgstr "-"
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:43
|
||||
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:43
|
||||
msgid "Removes selected provider"
|
||||
msgstr "Esborrar proveidor seleccionat"
|
||||
msgstr "Esborra el proveïdor seleccionat"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:47
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:47
|
||||
@@ -242,7 +243,7 @@ msgstr ""
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:272
|
||||
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:272
|
||||
msgid "&Clear Credentials"
|
||||
msgstr "&Esborrar Credencials"
|
||||
msgstr "&Esborra les credencials"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:273
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:273
|
||||
@@ -261,7 +262,7 @@ msgstr ""
|
||||
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:277
|
||||
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:316
|
||||
msgid "&Set Credentials..."
|
||||
msgstr "&Desar Credencials..."
|
||||
msgstr "&Desa les credencials..."
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:278
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:317
|
||||
@@ -304,7 +305,7 @@ msgstr "ID d'usuari i contrasenya"
|
||||
#: 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."
|
||||
msgstr "Sisplau introduiu el vostre ID d'usuari i contrasenya"
|
||||
msgstr "Introduïu el vostre ID d'usuari i contrasenya"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:379
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:443
|
||||
@@ -319,7 +320,7 @@ msgstr "ID d'usuari:"
|
||||
#: ver1.1/lib/EAPBase_UI/res/wxEAP_UI.cpp:384
|
||||
msgid "Enter your user name here (user@domain.org, DOMAIN\\User, etc.)"
|
||||
msgstr ""
|
||||
"Introduiu el vostre identificador aquí (identificador@domini.org, "
|
||||
"Introduïu el vostre identificador aquí (identificador@domini.org, "
|
||||
"DOMINI\\identificador, etc.)"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:388
|
||||
@@ -332,7 +333,7 @@ msgstr "Contrasenya:"
|
||||
#: 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"
|
||||
msgstr "Introduiu la vostra contrasenya aquí"
|
||||
msgstr "Introduïu la vostra contrasenya aquí"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:423
|
||||
msgid "User ID"
|
||||
@@ -340,7 +341,7 @@ msgstr "ID d'usuari"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:433
|
||||
msgid "Please provide your user ID."
|
||||
msgstr "Sisplau introduïu el vostre ID."
|
||||
msgstr "Introduïu el vostre ID."
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:473
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:424
|
||||
@@ -377,7 +378,7 @@ msgstr ""
|
||||
#: 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)"
|
||||
msgstr "(Sigueu breus, sisplau)"
|
||||
msgstr "(Sigueu breu)"
|
||||
|
||||
#: master/lib/EAPBase_UI/res/wxEAP_UI.cpp:510
|
||||
#: ver1.0/lib/EAPBase_UI/res/wxEAP_UI.cpp:461
|
||||
@@ -618,8 +619,7 @@ msgstr ""
|
||||
#: 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."
|
||||
msgstr ""
|
||||
"Sisplau, reconsidereu la necessitat d'introduir les vostres credencials."
|
||||
msgstr "Reconsidereu la necessitat d'introduir les vostres credencials."
|
||||
|
||||
#: master/lib/EapHost_UI/res/wxEapHost_UI.cpp:17
|
||||
#: ver1.1/lib/EapHost_UI/res/wxEapHost_UI.cpp:17
|
||||
@@ -667,11 +667,11 @@ msgstr "Repte GTC"
|
||||
|
||||
#: master/lib/GTC_UI/res/wxGTC_UI.cpp:26
|
||||
msgid "Please provide your response."
|
||||
msgstr "Faciliteu sisplau la vostra resposta."
|
||||
msgstr "Indiqueu la vostra resposta."
|
||||
|
||||
#: master/lib/GTC_UI/res/wxGTC_UI.cpp:38
|
||||
msgid "Server challenge"
|
||||
msgstr "Repte del Servidor"
|
||||
msgstr "Repte del servidor"
|
||||
|
||||
#: master/lib/GTC_UI/res/wxGTC_UI.cpp:43
|
||||
msgid "Enter your response here"
|
||||
@@ -752,7 +752,7 @@ msgstr ""
|
||||
#: 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..."
|
||||
msgstr "Afegir CA des d'un fitxer..."
|
||||
msgstr "Afegeix CA des d'un fitxer..."
|
||||
|
||||
#: 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
|
||||
@@ -762,7 +762,7 @@ msgstr "Afegeix una nova autoritat de certificació des de d'un arxiu"
|
||||
#: 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"
|
||||
msgstr "&Eliminar CA"
|
||||
msgstr "&Elimina CA"
|
||||
|
||||
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:58 ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:58
|
||||
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:58
|
||||
@@ -810,7 +810,7 @@ msgstr "Certificat de client per a l'autenticació"
|
||||
#: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:142
|
||||
#: ver1.1/lib/TLS_UI/res/wxTLS_UI.cpp:142
|
||||
msgid "Custom &identity:"
|
||||
msgstr "Personalitzar la &identitat:"
|
||||
msgstr "Personalitza la &identitat:"
|
||||
|
||||
#: master/lib/TLS_UI/res/wxTLS_UI.cpp:147
|
||||
#: ver1.0/lib/TLS_UI/res/wxTLS_UI.cpp:147
|
||||
@@ -825,7 +825,7 @@ msgstr ""
|
||||
#: 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"
|
||||
msgstr "Afegir Certificat"
|
||||
msgstr "Afegeix un certificat"
|
||||
|
||||
#: 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
|
||||
@@ -892,7 +892,7 @@ msgstr "Utilitza una identitat externa &buida"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Omet el meu identificador i utilitza només @elmeudomini.org"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -847,7 +847,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -897,7 +897,7 @@ msgstr "Leeren N&utzernamen verwenden"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
"Im unverschlüsselten Teil den Nutzernamen weglassen und nur den @domain Teil"
|
||||
" senden"
|
||||
|
@@ -907,7 +907,7 @@ msgstr "Χρησιμοποιήστε &κενή εξωτερική ταυτότη
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
"Παραλείψτε το όνομα χρήστη μου και χρησιμοποιήστε μόνο το @mydomain.org"
|
||||
|
||||
|
@@ -901,7 +901,7 @@ msgstr "Usar una identidad externa &vacía"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Omitir mi nombre de usuario y usar @midominio.org sólo"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -1,7 +1,7 @@
|
||||
# Translators:
|
||||
# Simon Rozman <simon@rozman.si>, 2018
|
||||
# Indrek Rokk <indrek.rokk@eenet.ee>, 2018
|
||||
# Anne M <anne@eenet.ee>, 2018
|
||||
# Anne M <anne@eenet.ee>, 2019
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: EAPMethods\n"
|
||||
"POT-Creation-Date: 2018-06-20 15:30+0200\n"
|
||||
"PO-Revision-Date: 2016-08-25 06:18+0000\n"
|
||||
"Last-Translator: Anne M <anne@eenet.ee>, 2018\n"
|
||||
"Last-Translator: Anne M <anne@eenet.ee>, 2019\n"
|
||||
"Language-Team: Estonian (https://www.transifex.com/eduroam_devel/teams/11799/et/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -94,7 +94,7 @@ msgstr "%s kasutajakonto andmed"
|
||||
#, c-format
|
||||
msgid "Error writing credentials to Credential Manager: %hs (error %u)"
|
||||
msgstr ""
|
||||
"Viga kasutajakonto andmete kirjustamisel kasutajakonto halduris (Credential "
|
||||
"Viga kasutajakonto andmete kirjutamisel kasutajakonto halduris (Credential "
|
||||
"Manager): %hs (viga %u)"
|
||||
|
||||
#: master/lib/EAPBase_UI/include/EAP_UI.h:796
|
||||
@@ -888,7 +888,7 @@ msgstr "Kasuta t&ühja välist identiteeti"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Jäta mu kasutajanimi ära ja kasuta ainult @minudomeeni"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -883,7 +883,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
"Koristi samo @mojadomena.hr (ovo nije podržano za korisnike iz sustava "
|
||||
"AAI@EduHr)"
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -895,7 +895,7 @@ msgstr "Usa una identità esterna &vuota"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Ometti il mio nome utente e usa solo @mydomain.org"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -847,7 +847,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -882,7 +882,7 @@ msgstr "Naudoti &tuščią išorinę tapatybę"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Praleisti mano naudotojo vardą ir naudoti tik @domenas.lt"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -885,7 +885,7 @@ msgstr "Bruk &tom ytre identitet"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Utelat mitt brukernavn og bruk kun @mydomian.org"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -894,7 +894,7 @@ msgstr "Użyj &pustego identyfikatora zewnętrznego"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Pomiń mój identyfikator i użyj tylko @mydomain.org"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -847,7 +847,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -882,7 +882,7 @@ msgstr "Uporabi prazno zunanjo id&entiteto"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Izpusti moje uporabniško ime in uporabi samo @mojadomena.si"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -896,7 +896,7 @@ msgstr "Koristi &empty spoljni identitet"
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr "Izostavi korisničko ime i koristi samo @mojdomen.ac.rs"
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -848,7 +848,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
@@ -846,7 +846,7 @@ msgstr ""
|
||||
#: master/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 "Omit my user name and use @mydomain.org only"
|
||||
msgstr ""
|
||||
|
||||
#: master/lib/TTLS_UI/res/wxTTLS_UI.cpp:48
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -76,7 +76,8 @@ BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID l
|
||||
///
|
||||
/// \sa [EapPeerFreeMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363606.aspx)
|
||||
///
|
||||
VOID WINAPI EapPeerFreeMemory(_In_ void *pUIContextData)
|
||||
_Use_decl_annotations_
|
||||
VOID WINAPI EapPeerFreeMemory(void *pUIContextData)
|
||||
{
|
||||
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
||||
|
||||
@@ -90,7 +91,8 @@ VOID WINAPI EapPeerFreeMemory(_In_ void *pUIContextData)
|
||||
///
|
||||
/// \sa [EapPeerFreeErrorMemory function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363605.aspx)
|
||||
///
|
||||
VOID WINAPI EapPeerFreeErrorMemory(_In_ EAP_ERROR *ppEapError)
|
||||
_Use_decl_annotations_
|
||||
VOID WINAPI EapPeerFreeErrorMemory(EAP_ERROR *ppEapError)
|
||||
{
|
||||
event_fn_auto event_auto(g_peer.get_event_fn_auto(__FUNCTION__));
|
||||
|
||||
@@ -104,13 +106,14 @@ VOID WINAPI EapPeerFreeErrorMemory(_In_ EAP_ERROR *ppEapError)
|
||||
///
|
||||
/// \sa [EapPeerConfigXml2Blob function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363602.aspx)
|
||||
///
|
||||
_Use_decl_annotations_
|
||||
DWORD WINAPI EapPeerConfigXml2Blob(
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
||||
_In_ IXMLDOMDocument2 *pConfigDoc,
|
||||
_Out_ BYTE **pConnectionDataOut,
|
||||
_Out_ DWORD *pdwConnectionDataOutSize,
|
||||
_Out_ EAP_ERROR **ppEapError)
|
||||
DWORD dwFlags,
|
||||
EAP_METHOD_TYPE eapMethodType,
|
||||
IXMLDOMDocument2 *pConfigDoc,
|
||||
BYTE **pConnectionDataOut,
|
||||
DWORD *pdwConnectionDataOutSize,
|
||||
EAP_ERROR **ppEapError)
|
||||
{
|
||||
DWORD dwResult = ERROR_SUCCESS;
|
||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||
@@ -118,42 +121,35 @@ DWORD WINAPI EapPeerConfigXml2Blob(
|
||||
//Sleep(10000);
|
||||
#endif
|
||||
|
||||
// Initialize output parameters.
|
||||
if (pConnectionDataOut)
|
||||
*pConnectionDataOut = NULL;
|
||||
if (pdwConnectionDataOutSize)
|
||||
*pdwConnectionDataOutSize = 0;
|
||||
if (ppEapError)
|
||||
*ppEapError = NULL;
|
||||
|
||||
// Parameter check
|
||||
if (!ppEapError)
|
||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != 67532)
|
||||
return dwResult = ERROR_NOT_SUPPORTED;
|
||||
if (!pConfigDoc || !pConnectionDataOut || !pdwConnectionDataOutSize)
|
||||
return dwResult = ERROR_INVALID_PARAMETER;
|
||||
|
||||
assert(!*ppEapError);
|
||||
// Configure XML selection namespaces used.
|
||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
||||
|
||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
||||
else if (eapMethodType.dwAuthorId != 67532)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
||||
else if (!pConfigDoc)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConfigDoc is NULL.")));
|
||||
else if (!pConnectionDataOut)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionDataOut is NULL.")));
|
||||
else if (!pdwConnectionDataOutSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwConnectionDataOutSize is NULL.")));
|
||||
else {
|
||||
// Configure XML selection namespaces used.
|
||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
||||
// <Config>
|
||||
com_obj<IXMLDOMElement> pXmlElConfig;
|
||||
if (FAILED(eapxml::select_element(pConfigDoc, bstr(L"//eaphostconfig:Config"), pXmlElConfig)))
|
||||
return dwResult = g_peer.log_error(ppEapError, ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" Error reading <Config> element."));
|
||||
|
||||
// <Config>
|
||||
com_obj<IXMLDOMElement> pXmlElConfig;
|
||||
if (FAILED(eapxml::select_element(pConfigDoc, bstr(L"//eaphostconfig:Config"), pXmlElConfig))) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" Error reading <Config> element.")));
|
||||
return dwResult;
|
||||
}
|
||||
|
||||
// Load configuration.
|
||||
try {
|
||||
g_peer.config_xml2blob(dwFlags, pXmlElConfig, pConnectionDataOut, pdwConnectionDataOutSize);
|
||||
} catch (std::exception &err) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
||||
dwResult = (*ppEapError)->dwWinError;
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
// Load configuration.
|
||||
try {
|
||||
g_peer.config_xml2blob(dwFlags, pXmlElConfig, pConnectionDataOut, pdwConnectionDataOutSize);
|
||||
} catch (std::exception &err) {
|
||||
dwResult = g_peer.log_error(ppEapError, err);
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
|
||||
return dwResult;
|
||||
@@ -167,13 +163,14 @@ DWORD WINAPI EapPeerConfigXml2Blob(
|
||||
///
|
||||
/// \sa [EapPeerConfigBlob2Xml function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363601.aspx)
|
||||
///
|
||||
_Use_decl_annotations_
|
||||
DWORD WINAPI EapPeerConfigBlob2Xml(
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ EAP_METHOD_TYPE eapMethodType,
|
||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
||||
_In_ DWORD dwConnectionDataSize,
|
||||
_Out_ IXMLDOMDocument2 **ppConfigDoc,
|
||||
_Out_ EAP_ERROR **ppEapError)
|
||||
DWORD dwFlags,
|
||||
EAP_METHOD_TYPE eapMethodType,
|
||||
const BYTE *pConnectionData,
|
||||
DWORD dwConnectionDataSize,
|
||||
IXMLDOMDocument2 **ppConfigDoc,
|
||||
EAP_ERROR **ppEapError)
|
||||
{
|
||||
DWORD dwResult = ERROR_SUCCESS;
|
||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||
@@ -181,67 +178,54 @@ DWORD WINAPI EapPeerConfigBlob2Xml(
|
||||
//Sleep(10000);
|
||||
#endif
|
||||
|
||||
// Initialize output parameters.
|
||||
if (ppConfigDoc)
|
||||
*ppConfigDoc = NULL;
|
||||
if (ppEapError)
|
||||
*ppEapError = NULL;
|
||||
|
||||
// Parameter check
|
||||
if (!ppEapError)
|
||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE || eapMethodType.dwAuthorId != 67532)
|
||||
return dwResult = ERROR_NOT_SUPPORTED;
|
||||
if (!pConnectionData && dwConnectionDataSize || !ppConfigDoc)
|
||||
return dwResult = ERROR_INVALID_PARAMETER;
|
||||
|
||||
assert(!*ppEapError);
|
||||
HRESULT hr;
|
||||
|
||||
if (eapMethodType.eapType.type != EAPMETHOD_TYPE)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)eapMethodType.eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
||||
else if (eapMethodType.dwAuthorId != 67532)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)eapMethodType.dwAuthorId, (int)67532).c_str()));
|
||||
else if (!pConnectionData && dwConnectionDataSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
||||
else if (!ppConfigDoc)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppConfigDoc is NULL.")));
|
||||
else {
|
||||
HRESULT hr;
|
||||
// Create configuration XML document.
|
||||
com_obj<IXMLDOMDocument2> pConfigDoc;
|
||||
if (FAILED(hr = pConfigDoc.create(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER)))
|
||||
return dwResult = g_peer.log_error(ppEapError, HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error creating XML document."));
|
||||
|
||||
// Create configuration XML document.
|
||||
com_obj<IXMLDOMDocument2> pConfigDoc;
|
||||
if (FAILED(hr = pConfigDoc.create(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER))) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error creating XML document.")));
|
||||
return dwResult;
|
||||
}
|
||||
pConfigDoc->put_async(VARIANT_FALSE);
|
||||
|
||||
pConfigDoc->put_async(VARIANT_FALSE);
|
||||
// Load empty XML configuration.
|
||||
VARIANT_BOOL isSuccess = VARIANT_FALSE;
|
||||
if (FAILED((hr = pConfigDoc->loadXML(L"<Config xmlns=\"http://www.microsoft.com/provisioning/EapHostConfig\"></Config>", &isSuccess))))
|
||||
return dwResult = g_peer.log_error(ppEapError, HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error loading XML document template."));
|
||||
if (!isSuccess)
|
||||
return dwResult = g_peer.log_error(ppEapError, ERROR_XML_PARSE_ERROR, _T(__FUNCTION__) _T(" Loading XML template failed."));
|
||||
|
||||
// Load empty XML configuration.
|
||||
VARIANT_BOOL isSuccess = VARIANT_FALSE;
|
||||
if (FAILED((hr = pConfigDoc->loadXML(L"<Config xmlns=\"http://www.microsoft.com/provisioning/EapHostConfig\"></Config>", &isSuccess)))) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = HRESULT_CODE(hr), _T(__FUNCTION__) _T(" Error loading XML document template.")));
|
||||
return dwResult;
|
||||
}
|
||||
if (!isSuccess) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_XML_PARSE_ERROR, _T(__FUNCTION__) _T(" Loading XML template failed.")));
|
||||
return dwResult;
|
||||
}
|
||||
// Configure XML selection namespaces used.
|
||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
||||
|
||||
// Configure XML selection namespaces used.
|
||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\" xmlns:eaphostconfig=\"http://www.microsoft.com/provisioning/EapHostConfig\""));
|
||||
// Select <Config> node.
|
||||
com_obj<IXMLDOMNode> pXmlElConfig;
|
||||
if (FAILED(eapxml::select_node(pConfigDoc, bstr(L"eaphostconfig:Config"), pXmlElConfig)))
|
||||
return dwResult = g_peer.log_error(ppEapError, ERROR_NOT_FOUND, _T(__FUNCTION__) _T(" Error selecting <Config> element."));
|
||||
|
||||
// Select <Config> node.
|
||||
com_obj<IXMLDOMNode> pXmlElConfig;
|
||||
if (FAILED(eapxml::select_node(pConfigDoc, bstr(L"eaphostconfig:Config"), pXmlElConfig))) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_FOUND, _T(__FUNCTION__) _T(" Error selecting <Config> element.")));
|
||||
return dwResult;
|
||||
}
|
||||
|
||||
// Save configuration.
|
||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\""));
|
||||
try {
|
||||
g_peer.config_blob2xml(dwFlags, pConnectionData, dwConnectionDataSize, pConfigDoc, pXmlElConfig);
|
||||
} catch (std::exception &err) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
||||
return dwResult = (*ppEapError)->dwWinError;
|
||||
} catch (...) {
|
||||
return dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
|
||||
*ppConfigDoc = pConfigDoc.detach();
|
||||
// Save configuration.
|
||||
pConfigDoc->setProperty(bstr(L"SelectionNamespaces"), variant(L"xmlns:eap-metadata=\"urn:ietf:params:xml:ns:yang:ietf-eap-metadata\""));
|
||||
try {
|
||||
g_peer.config_blob2xml(dwFlags, pConnectionData, dwConnectionDataSize, pConfigDoc, pXmlElConfig);
|
||||
} catch (std::exception &err) {
|
||||
dwResult = g_peer.log_error(ppEapError, err);
|
||||
} catch (...) {
|
||||
return dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
|
||||
*ppConfigDoc = pConfigDoc.detach();
|
||||
|
||||
return dwResult;
|
||||
}
|
||||
|
||||
@@ -251,15 +235,16 @@ DWORD WINAPI EapPeerConfigBlob2Xml(
|
||||
///
|
||||
/// \sa [EapPeerInvokeConfigUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363614.aspx)
|
||||
///
|
||||
//_Use_decl_annotations_
|
||||
DWORD WINAPI EapPeerInvokeConfigUI(
|
||||
_In_ const EAP_METHOD_TYPE *pEapType,
|
||||
_In_ HWND hwndParent,
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ DWORD dwConnectionDataInSize,
|
||||
_In_count_(dwConnectionDataInSize) const BYTE *pConnectionDataIn,
|
||||
_Out_ DWORD *pdwConnectionDataOutSize,
|
||||
_Out_ BYTE **ppConnectionDataOut,
|
||||
_Out_ EAP_ERROR **ppEapError)
|
||||
const EAP_METHOD_TYPE *pEapType,
|
||||
HWND hwndParent,
|
||||
DWORD dwFlags,
|
||||
DWORD dwConnectionDataInSize,
|
||||
const BYTE *pConnectionDataIn,
|
||||
DWORD *pdwConnectionDataOutSize,
|
||||
BYTE **ppConnectionDataOut,
|
||||
EAP_ERROR **ppEapError)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwFlags);
|
||||
DWORD dwResult = ERROR_SUCCESS;
|
||||
@@ -269,33 +254,26 @@ DWORD WINAPI EapPeerInvokeConfigUI(
|
||||
//Sleep(10000);
|
||||
#endif
|
||||
|
||||
// Initialize output parameters.
|
||||
if (pdwConnectionDataOutSize)
|
||||
*pdwConnectionDataOutSize = 0;
|
||||
if (ppConnectionDataOut)
|
||||
*ppConnectionDataOut = NULL;
|
||||
if (ppEapError)
|
||||
*ppEapError = NULL;
|
||||
|
||||
// Parameter check
|
||||
if (!ppEapError)
|
||||
if (!pEapType || !pConnectionDataIn && dwConnectionDataInSize || !pdwConnectionDataOutSize || !ppConnectionDataOut)
|
||||
return dwResult = ERROR_INVALID_PARAMETER;
|
||||
if (pEapType->eapType.type != EAPMETHOD_TYPE || pEapType->dwAuthorId != 67532)
|
||||
return dwResult = ERROR_NOT_SUPPORTED;
|
||||
|
||||
assert(!*ppEapError);
|
||||
|
||||
if (!pEapType)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapType is NULL.")));
|
||||
else if (pEapType->eapType.type != EAPMETHOD_TYPE)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)pEapType->eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
||||
else if (pEapType->dwAuthorId != 67532)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)pEapType->dwAuthorId, (int)67532).c_str()));
|
||||
else if (!pConnectionDataIn && dwConnectionDataInSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionDataIn is NULL.")));
|
||||
else if (!pdwConnectionDataOutSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwConnectionDataOutSize is NULL.")));
|
||||
else if (!ppConnectionDataOut)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppConnectionDataOut is NULL.")));
|
||||
else {
|
||||
try {
|
||||
g_peer.invoke_config_ui(hwndParent, pConnectionDataIn, dwConnectionDataInSize, ppConnectionDataOut, pdwConnectionDataOutSize);
|
||||
} catch (std::exception &err) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
||||
dwResult = (*ppEapError)->dwWinError;
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
try {
|
||||
g_peer.invoke_config_ui(hwndParent, pConnectionDataIn, dwConnectionDataInSize, ppConnectionDataOut, pdwConnectionDataOutSize);
|
||||
} catch (std::exception &err) {
|
||||
dwResult = g_peer.log_error(ppEapError, err);
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
|
||||
return dwResult;
|
||||
@@ -307,18 +285,19 @@ DWORD WINAPI EapPeerInvokeConfigUI(
|
||||
///
|
||||
/// \sa [EapPeerInvokeIdentityUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363615.aspx)
|
||||
///
|
||||
//_Use_decl_annotations_
|
||||
DWORD WINAPI EapPeerInvokeIdentityUI(
|
||||
_In_ const EAP_METHOD_TYPE *pEapType,
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ HWND hwndParent,
|
||||
_In_ DWORD dwConnectionDataSize,
|
||||
_In_count_(dwConnectionDataSize) const BYTE *pConnectionData,
|
||||
_In_ DWORD dwUserDataSize,
|
||||
_In_count_(dwUserDataSize) const BYTE *pUserData,
|
||||
_Out_ DWORD *pdwUserDataOutSize,
|
||||
_Out_ BYTE **ppUserDataOut,
|
||||
_Out_ LPWSTR *ppwszIdentity,
|
||||
_Out_ EAP_ERROR **ppEapError)
|
||||
const EAP_METHOD_TYPE *pEapType,
|
||||
DWORD dwFlags,
|
||||
HWND hwndParent,
|
||||
DWORD dwConnectionDataSize,
|
||||
const BYTE *pConnectionData,
|
||||
DWORD dwUserDataSize,
|
||||
const BYTE *pUserData,
|
||||
DWORD *pdwUserDataOutSize,
|
||||
BYTE **ppUserDataOut,
|
||||
LPWSTR *ppwszIdentity,
|
||||
EAP_ERROR **ppEapError)
|
||||
{
|
||||
DWORD dwResult = ERROR_SUCCESS;
|
||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||
@@ -327,37 +306,28 @@ DWORD WINAPI EapPeerInvokeIdentityUI(
|
||||
//Sleep(10000);
|
||||
#endif
|
||||
|
||||
// Initialize output parameters.
|
||||
if (pdwUserDataOutSize)
|
||||
*pdwUserDataOutSize = 0;
|
||||
if (ppUserDataOut)
|
||||
*ppUserDataOut = NULL;
|
||||
if (ppwszIdentity)
|
||||
*ppwszIdentity = NULL;
|
||||
if (ppEapError)
|
||||
*ppEapError = NULL;
|
||||
|
||||
// Parameter check
|
||||
if (!ppEapError)
|
||||
dwResult = ERROR_INVALID_PARAMETER;
|
||||
if (!pEapType || !pConnectionData && dwConnectionDataSize || !pUserData && dwUserDataSize || !pdwUserDataOutSize || !ppUserDataOut || !ppwszIdentity)
|
||||
return dwResult = ERROR_INVALID_PARAMETER;
|
||||
if (pEapType->eapType.type != EAPMETHOD_TYPE || pEapType->dwAuthorId != 67532)
|
||||
return dwResult = ERROR_NOT_SUPPORTED;
|
||||
|
||||
assert(!*ppEapError);
|
||||
|
||||
if (!pEapType)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapType is NULL.")));
|
||||
else if (pEapType->eapType.type != EAPMETHOD_TYPE)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)pEapType->eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
||||
else if (pEapType->dwAuthorId != 67532)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)pEapType->dwAuthorId, (int)67532).c_str()));
|
||||
else if (!pConnectionData && dwConnectionDataSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pConnectionData is NULL.")));
|
||||
else if (!pUserData && dwUserDataSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUserData is NULL.")));
|
||||
else if (!pdwUserDataOutSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwUserDataOutSize is NULL.")));
|
||||
else if (!ppUserDataOut)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppUserDataOut is NULL.")));
|
||||
else if (!ppwszIdentity)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppwszIdentity is NULL.")));
|
||||
else {
|
||||
try {
|
||||
g_peer.invoke_identity_ui(hwndParent, dwFlags, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, ppUserDataOut, pdwUserDataOutSize, ppwszIdentity);
|
||||
} catch (std::exception &err) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
||||
dwResult = (*ppEapError)->dwWinError;
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
try {
|
||||
g_peer.invoke_identity_ui(hwndParent, dwFlags, pConnectionData, dwConnectionDataSize, pUserData, dwUserDataSize, ppUserDataOut, pdwUserDataOutSize, ppwszIdentity);
|
||||
} catch (std::exception &err) {
|
||||
dwResult = g_peer.log_error(ppEapError, err);
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
|
||||
return dwResult;
|
||||
@@ -369,14 +339,15 @@ DWORD WINAPI EapPeerInvokeIdentityUI(
|
||||
///
|
||||
/// \sa [EapPeerInvokeInteractiveUI function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363616.aspx)
|
||||
///
|
||||
//_Use_decl_annotations_
|
||||
DWORD WINAPI EapPeerInvokeInteractiveUI(
|
||||
_In_ const EAP_METHOD_TYPE *pEapType,
|
||||
_In_ HWND hwndParent,
|
||||
_In_ DWORD dwUIContextDataSize,
|
||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
||||
_Out_ DWORD *pdwDataFromInteractiveUISize,
|
||||
_Out_ BYTE **ppDataFromInteractiveUI,
|
||||
_Out_ EAP_ERROR **ppEapError)
|
||||
const EAP_METHOD_TYPE *pEapType,
|
||||
HWND hwndParent,
|
||||
DWORD dwUIContextDataSize,
|
||||
const BYTE *pUIContextData,
|
||||
DWORD *pdwDataFromInteractiveUISize,
|
||||
BYTE **ppDataFromInteractiveUI,
|
||||
EAP_ERROR **ppEapError)
|
||||
{
|
||||
DWORD dwResult = ERROR_SUCCESS;
|
||||
event_fn_auto_ret<DWORD> event_auto(g_peer.get_event_fn_auto(__FUNCTION__, dwResult));
|
||||
@@ -385,33 +356,26 @@ DWORD WINAPI EapPeerInvokeInteractiveUI(
|
||||
//Sleep(10000);
|
||||
#endif
|
||||
|
||||
// Initialize output parameters.
|
||||
if (pdwDataFromInteractiveUISize)
|
||||
*pdwDataFromInteractiveUISize = 0;
|
||||
if (ppDataFromInteractiveUI)
|
||||
*ppDataFromInteractiveUI = NULL;
|
||||
if (ppEapError)
|
||||
*ppEapError = NULL;
|
||||
|
||||
// Parameter check
|
||||
if (!ppEapError)
|
||||
if (!pEapType || !pUIContextData && dwUIContextDataSize || !pdwDataFromInteractiveUISize || !ppDataFromInteractiveUI)
|
||||
return dwResult = ERROR_INVALID_PARAMETER;
|
||||
if (pEapType->eapType.type != EAPMETHOD_TYPE || pEapType->dwAuthorId != 67532)
|
||||
return dwResult = ERROR_NOT_SUPPORTED;
|
||||
|
||||
assert(!*ppEapError);
|
||||
|
||||
if (!pEapType)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pEapType is NULL.")));
|
||||
else if (pEapType->eapType.type != EAPMETHOD_TYPE)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" Input EAP type (%d) does not match the supported EAP type (%d)."), (int)pEapType->eapType.type, (int)EAPMETHOD_TYPE).c_str()));
|
||||
else if (pEapType->dwAuthorId != 67532)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_NOT_SUPPORTED, wstring_printf(_T(__FUNCTION__) _T(" EAP author (%d) does not match the supported author (%d)."), (int)pEapType->dwAuthorId, (int)67532).c_str()));
|
||||
else if (!pUIContextData && dwUIContextDataSize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pUIContextData is NULL.")));
|
||||
else if (!pdwDataFromInteractiveUISize)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" pdwDataFromInteractiveUISize is NULL.")));
|
||||
else if (!ppDataFromInteractiveUI)
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(dwResult = ERROR_INVALID_PARAMETER, _T(__FUNCTION__) _T(" ppDataFromInteractiveUI is NULL.")));
|
||||
else {
|
||||
try {
|
||||
g_peer.invoke_interactive_ui(hwndParent, pUIContextData, dwUIContextDataSize, ppDataFromInteractiveUI, pdwDataFromInteractiveUISize);
|
||||
} catch (std::exception &err) {
|
||||
g_peer.log_error(*ppEapError = g_peer.make_error(err));
|
||||
dwResult = (*ppEapError)->dwWinError;
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
try {
|
||||
g_peer.invoke_interactive_ui(hwndParent, pUIContextData, dwUIContextDataSize, ppDataFromInteractiveUI, pdwDataFromInteractiveUISize);
|
||||
} catch (std::exception &err) {
|
||||
dwResult = g_peer.log_error(ppEapError, err);
|
||||
} catch (...) {
|
||||
dwResult = ERROR_INVALID_DATA;
|
||||
}
|
||||
|
||||
return dwResult;
|
||||
|
@@ -28,6 +28,7 @@
|
||||
// wxEventMonitorApp
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma warning(suppress: 28251)
|
||||
wxIMPLEMENT_APP(wxEventMonitorApp);
|
||||
|
||||
|
||||
|
@@ -132,11 +132,8 @@ VOID WINAPI wxEventTraceProcessorThread::EventRecordCallback(_In_ PEVENT_RECORD
|
||||
wxASSERT_MSG(pEvent->UserContext, wxT("thread is NULL"));
|
||||
|
||||
wxEventTraceProcessorThread *_this = ((wxEventTraceProcessorThread*)pEvent->UserContext);
|
||||
|
||||
if (_this->TestDestroy()) {
|
||||
// Event processing is pending destruction.
|
||||
if (!_this || _this->TestDestroy())
|
||||
return;
|
||||
}
|
||||
|
||||
_this->m_parent->QueueEvent(new wxETWEvent(wxEVT_ETW_EVENT, *pEvent));
|
||||
}
|
||||
@@ -178,7 +175,7 @@ wxETWListCtrl::wxETWListCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos
|
||||
m_col_format_width[0] = 26;
|
||||
m_col_format_width[1] = 5;
|
||||
m_col_format_width[2] = 5;
|
||||
m_col_format_width[3] = std::max<int>(std::max<int>(_countof("EapHost"), _countof("Schannel")), _countof(PRODUCT_NAME_STR)) - 1;
|
||||
m_col_format_width[3] = std::max<size_t>(std::max<size_t>(_countof("EapHost"), _countof("Schannel")), _countof(PRODUCT_NAME_STR)) - 1;
|
||||
m_col_format_width[4] = 0;
|
||||
|
||||
// Prepare all possible item attributes.
|
||||
@@ -219,7 +216,11 @@ wxETWListCtrl::wxETWListCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos
|
||||
properties->Wnode.BufferSize = ulSize;
|
||||
properties->Wnode.Flags = WNODE_FLAG_TRACED_GUID;
|
||||
properties->Wnode.ClientContext = 1; //QPC clock resolution
|
||||
CoCreateGuid(&(properties->Wnode.Guid));
|
||||
HRESULT hr = CoCreateGuid(&(properties->Wnode.Guid));
|
||||
if (FAILED(hr)) {
|
||||
wxLogError(winstd::tstring_printf(wxT("error 0x%08x generating GUID"), hr).c_str());
|
||||
continue;
|
||||
}
|
||||
properties->LogFileMode = /*EVENT_TRACE_FILE_MODE_SEQUENTIAL |*/ EVENT_TRACE_REAL_TIME_MODE;
|
||||
properties->MaximumFileSize = 1; // 1 MB
|
||||
properties->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
|
||||
@@ -776,13 +777,13 @@ static tstring MapToString(_In_ const EVENT_MAP_INFO *pMapInfo, _In_ ULONG ulDat
|
||||
((pMapInfo->Flag & EVENTMAP_INFO_FLAG_WBEM_VALUEMAP ) && (pMapInfo->Flag & ~EVENTMAP_INFO_FLAG_WBEM_VALUEMAP) != EVENTMAP_INFO_FLAG_WBEM_FLAG))
|
||||
{
|
||||
if ((pMapInfo->Flag & EVENTMAP_INFO_FLAG_WBEM_NO_MAP) == EVENTMAP_INFO_FLAG_WBEM_NO_MAP)
|
||||
return tstring_printf(_T("%ls"), (PBYTE)pMapInfo + pMapInfo->MapEntryArray[ulData].OutputOffset);
|
||||
return tstring_printf(_T("%ls"), (LPCWSTR)((PBYTE)pMapInfo + pMapInfo->MapEntryArray[ulData].OutputOffset));
|
||||
else {
|
||||
for (ULONG i = 0; ; i++) {
|
||||
if (i >= pMapInfo->EntryCount)
|
||||
return tstring_printf(_T("%lu"), ulData);
|
||||
else if (pMapInfo->MapEntryArray[i].Value == ulData)
|
||||
return tstring_printf(_T("%ls"), (PBYTE)pMapInfo + pMapInfo->MapEntryArray[i].OutputOffset);
|
||||
return tstring_printf(_T("%ls"), (LPCWSTR)((PBYTE)pMapInfo + pMapInfo->MapEntryArray[i].OutputOffset));
|
||||
}
|
||||
}
|
||||
} else if (
|
||||
@@ -817,7 +818,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
||||
case TDH_INTYPE_UNICODESTRING:
|
||||
case TDH_INTYPE_NONNULLTERMINATEDSTRING:
|
||||
case TDH_INTYPE_UNICODECHAR:
|
||||
return tstring_printf(_T("%.*ls"), nDataSize/sizeof(WCHAR), pData);
|
||||
return tstring_printf(_T("%.*ls"), (unsigned int)(nDataSize/sizeof(WCHAR)), (LPCWSTR)pData);
|
||||
|
||||
case TDH_INTYPE_ANSISTRING:
|
||||
case TDH_INTYPE_NONNULLTERMINATEDANSISTRING:
|
||||
@@ -918,6 +919,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
||||
case TDH_INTYPE_BINARY:
|
||||
switch (OutType) {
|
||||
case TDH_OUTTYPE_IPV6: {
|
||||
#pragma warning(suppress: 6387) // ntdll.dll *must* exist.
|
||||
auto RtlIpv6AddressToString = (LPTSTR(NTAPI*)(const IN6_ADDR*, LPTSTR))GetProcAddress(GetModuleHandle(_T("ntdll.dll")),
|
||||
#ifdef _UNICODE
|
||||
"RtlIpv6AddressToStringW"
|
||||
@@ -945,8 +947,12 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
||||
case TDH_INTYPE_GUID: {
|
||||
assert(nDataSize >= sizeof(GUID));
|
||||
WCHAR szGuid[39];
|
||||
StringFromGUID2(*(GUID*)pData, szGuid, _countof(szGuid));
|
||||
return tstring_printf(_T("%ls"), szGuid);
|
||||
if (StringFromGUID2(*(GUID*)pData, szGuid, _countof(szGuid)))
|
||||
return tstring_printf(_T("%ls"), szGuid);
|
||||
else {
|
||||
assert(0);
|
||||
return _T("(GUID)");
|
||||
}
|
||||
}
|
||||
|
||||
case TDH_INTYPE_POINTER:
|
||||
@@ -995,7 +1001,7 @@ static tstring DataToString(_In_ USHORT InType, _In_ USHORT OutType, _In_count_(
|
||||
// 32-bit computer and 16 bytes on a 64-bit computer.
|
||||
// Doubling the pointer size handles both cases.
|
||||
assert(nDataSize >= (SIZE_T)nPtrSize * 2);
|
||||
return (PULONG)pData > 0 ? DataToString(TDH_INTYPE_SID, OutType, pData + nPtrSize * 2, nDataSize - nPtrSize * 2, pMapInfo, nPtrSize) : _T("(WBEM SID)");
|
||||
return (PULONG)pData > 0 ? DataToString(TDH_INTYPE_SID, OutType, pData + (SIZE_T)nPtrSize * 2, nDataSize - (SIZE_T)nPtrSize * 2, pMapInfo, nPtrSize) : _T("(WBEM SID)");
|
||||
|
||||
case TDH_INTYPE_SID: {
|
||||
assert(nDataSize >= sizeof(SID));
|
||||
@@ -1027,7 +1033,7 @@ static ULONG GetArraySize(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, ULONG i
|
||||
ULONG ulResult;
|
||||
|
||||
// Get array count property.
|
||||
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[pInfo->EventPropertyInfoArray[i].countPropertyIndex].NameOffset), ULONG_MAX };
|
||||
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)pInfo + pInfo->EventPropertyInfoArray[pInfo->EventPropertyInfoArray[i].countPropertyIndex].NameOffset, ULONG_MAX };
|
||||
vector<unsigned char> count;
|
||||
if ((ulResult = TdhGetProperty(pEvent, 0, NULL, 1, &data_desc, count)) != ERROR_SUCCESS)
|
||||
return ulResult;
|
||||
@@ -1067,7 +1073,7 @@ static tstring PropertyToString(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, U
|
||||
if (out_nonfirst) out += _T(", "); else out_nonfirst = true;
|
||||
out += _T('(');
|
||||
for (USHORT j = pInfo->EventPropertyInfoArray[ulPropIndex].structType.StructStartIndex, usLastMember = pInfo->EventPropertyInfoArray[ulPropIndex].structType.StructStartIndex + pInfo->EventPropertyInfoArray[ulPropIndex].structType.NumOfStructMembers; j < usLastMember; j++) {
|
||||
out += tstring_printf(_T("%ls: "), reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[j].NameOffset);
|
||||
out += tstring_printf(_T("%ls: "), (LPCWSTR)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[j].NameOffset));
|
||||
out += PropertyToString(pEvent, pInfo, j, reinterpret_cast<LPWSTR>(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k, nPtrSize);
|
||||
}
|
||||
out += _T(')');
|
||||
@@ -1086,12 +1092,12 @@ static tstring PropertyToString(PEVENT_RECORD pEvent, PTRACE_EVENT_INFO pInfo, U
|
||||
// The first descriptor in the array identifies the name of the structure and the second
|
||||
// descriptor defines the member of the structure whose data you want to retrieve.
|
||||
PROPERTY_DATA_DESCRIPTOR data_desc[2] = {
|
||||
{ (ULONGLONG)pStructureName , ulStructIndex },
|
||||
{ (ULONGLONG)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k }
|
||||
{ (ULONGLONG)pStructureName , ulStructIndex },
|
||||
{ (ULONGLONG)pInfo + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset, k }
|
||||
};
|
||||
ulResult = TdhGetProperty(pEvent, 0, NULL, _countof(data_desc), data_desc, data);
|
||||
} else {
|
||||
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)(reinterpret_cast<LPBYTE>(pInfo) + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset), k };
|
||||
PROPERTY_DATA_DESCRIPTOR data_desc = { (ULONGLONG)pInfo + pInfo->EventPropertyInfoArray[ulPropIndex].NameOffset, k };
|
||||
ulResult = TdhGetProperty(pEvent, 0, NULL, 1, &data_desc, data);
|
||||
}
|
||||
if (ulResult == ERROR_EVT_INVALID_EVENT_DATA) {
|
||||
|
@@ -150,7 +150,7 @@ protected:
|
||||
|
||||
private:
|
||||
/// \cond internal
|
||||
static VOID WINAPI EventRecordCallback(PEVENT_RECORD pEvent);
|
||||
static VOID WINAPI EventRecordCallback(_In_ PEVENT_RECORD pEvent);
|
||||
/// \endcond
|
||||
|
||||
protected:
|
||||
|
@@ -30,26 +30,26 @@
|
||||
<ProjectGuid>{E0D0725B-B2FC-4225-9481-CA9B1B6306F2}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>EventMonitor</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -57,21 +57,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -156,10 +156,10 @@
|
||||
<ProjectReference Include="..\lib\Events\build\Events.vcxproj">
|
||||
<Project>{d63f24bd-92a0-4d6b-8b69-ed947e4d2b1b}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-16.0.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib-15.0.vcxproj">
|
||||
<ProjectReference Include="..\lib\wxExtend\build\wxExtendLib-16.0.vcxproj">
|
||||
<Project>{d3e29951-d9f5-486d-a167-20ae8e90b1fa}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
@@ -34,6 +34,9 @@ class wxPersistentEventMonitorFrame;
|
||||
|
||||
#include <WinStd/Win.h>
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 26444)
|
||||
|
||||
|
||||
/// \addtogroup EventMonitor
|
||||
/// @{
|
||||
@@ -173,3 +176,5 @@ inline wxPersistentObject *wxCreatePersistentObject(wxEventMonitorFrame *wnd)
|
||||
}
|
||||
|
||||
/// @}
|
||||
|
||||
#pragma warning(pop)
|
||||
|
@@ -2,269 +2,219 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EventMonitor\n"
|
||||
"POT-Creation-Date: 2016-11-08 11:55+0100\n"
|
||||
"POT-Creation-Date: 2019-08-12 14:04+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"X-Poedit-Basepath: ../../..\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Language: en_US\n"
|
||||
"X-Generator: Poedit 2.2.3\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: master/EventMonitor\n"
|
||||
"X-Poedit-SearchPath-1: ver1.0/EventMonitor\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: master/EventMonitor/App.cpp:61 ver1.0/EventMonitor/App.cpp:61
|
||||
#: master/EventMonitor/Frame.h:75 ver1.0/EventMonitor/Frame.h:75
|
||||
#: 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.x64.Debug.Feature-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.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.Release.Feature-2.idtx:4
|
||||
#: App.cpp:61 Frame.h:75 MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
msgid "Event Monitor"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:83 ver1.0/EventMonitor/ETWLog.cpp:83
|
||||
#: ETWLog.cpp:83
|
||||
#, c-format
|
||||
msgid "Error opening event trace (error %u)."
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:171 ver1.0/EventMonitor/ETWLog.cpp:171
|
||||
#: ETWLog.cpp:171
|
||||
msgid "Time"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:172 ver1.0/EventMonitor/ETWLog.cpp:172
|
||||
#: ETWLog.cpp:172
|
||||
msgid "PID"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:173 ver1.0/EventMonitor/ETWLog.cpp:173
|
||||
#: ETWLog.cpp:173
|
||||
msgid "TID"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:174 ver1.0/EventMonitor/ETWLog.cpp:174
|
||||
#: ETWLog.cpp:174
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:175 ver1.0/EventMonitor/ETWLog.cpp:175
|
||||
#: ETWLog.cpp:175
|
||||
msgid "Event"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:232 ver1.0/EventMonitor/ETWLog.cpp:232
|
||||
#: 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."
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:235 ver1.0/EventMonitor/ETWLog.cpp:235
|
||||
#: ETWLog.cpp:235
|
||||
#, c-format
|
||||
msgid "The %s event session already exists."
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:239 ver1.0/EventMonitor/ETWLog.cpp:239
|
||||
#: ETWLog.cpp:239
|
||||
#, c-format
|
||||
msgid "Error creating event session (error %u)."
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:255 master/EventMonitor/ETWLog.cpp:271
|
||||
#: master/EventMonitor/ETWLog.cpp:285 ver1.0/EventMonitor/ETWLog.cpp:255
|
||||
#: ver1.0/EventMonitor/ETWLog.cpp:271 ver1.0/EventMonitor/ETWLog.cpp:285
|
||||
#: ETWLog.cpp:255 ETWLog.cpp:271 ETWLog.cpp:285
|
||||
#, c-format
|
||||
msgid "Error enabling %s event provider (error %u)."
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:48 master/EventMonitor/Frame.cpp:108
|
||||
#: master/EventMonitor/Frame.cpp:113 master/EventMonitor/Frame.cpp:168
|
||||
#: 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:168 ver1.0/EventMonitor/Frame.cpp:170
|
||||
#: Frame.cpp:48 Frame.cpp:108 Frame.cpp:113 Frame.cpp:168 Frame.cpp:170
|
||||
#, c-format
|
||||
msgid "Toggles display of %s records"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65
|
||||
#: Frame.cpp:65
|
||||
msgid "E&xit"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:65 ver1.0/EventMonitor/Frame.cpp:65
|
||||
#: Frame.cpp:65
|
||||
msgid "Quits this program"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:69 ver1.0/EventMonitor/Frame.cpp:69
|
||||
#: Frame.cpp:69
|
||||
msgid "&Program"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:73
|
||||
#: Frame.cpp:73
|
||||
msgid "&Copy"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:73 master/EventMonitor/Frame.cpp:154
|
||||
#: ver1.0/EventMonitor/Frame.cpp:73 ver1.0/EventMonitor/Frame.cpp:154
|
||||
#: Frame.cpp:73 Frame.cpp:154
|
||||
msgid "Copies selected records to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:78
|
||||
#: Frame.cpp:78
|
||||
msgid "Copy A&ll"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:78 master/EventMonitor/Frame.cpp:156
|
||||
#: ver1.0/EventMonitor/Frame.cpp:78 ver1.0/EventMonitor/Frame.cpp:156
|
||||
#: Frame.cpp:78 Frame.cpp:156
|
||||
msgid "Copies all records to clipboard (including hidden)"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158
|
||||
#: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158
|
||||
#: Frame.cpp:83 Frame.cpp:158
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:83 master/EventMonitor/Frame.cpp:158
|
||||
#: ver1.0/EventMonitor/Frame.cpp:83 ver1.0/EventMonitor/Frame.cpp:158
|
||||
#: Frame.cpp:83 Frame.cpp:158
|
||||
msgid "Clears all records from the log"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90
|
||||
#: Frame.cpp:90
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:90 ver1.0/EventMonitor/Frame.cpp:90
|
||||
#: Frame.cpp:90
|
||||
msgid "Selects all visible records"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94
|
||||
#: Frame.cpp:94
|
||||
msgid "Select &None"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:94 ver1.0/EventMonitor/Frame.cpp:94
|
||||
#: Frame.cpp:94
|
||||
msgid "Clears record selection"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:97 master/EventMonitor/Frame.cpp:142
|
||||
#: ver1.0/EventMonitor/Frame.cpp:97 ver1.0/EventMonitor/Frame.cpp:142
|
||||
#: Frame.cpp:97 Frame.cpp:142
|
||||
msgid "&Edit"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:101
|
||||
#: Frame.cpp:101
|
||||
msgid "Auto &Scroll"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:101 master/EventMonitor/Frame.cpp:164
|
||||
#: ver1.0/EventMonitor/Frame.cpp:101 ver1.0/EventMonitor/Frame.cpp:164
|
||||
#: Frame.cpp:101 Frame.cpp:164
|
||||
msgid "Automatically scrolls to the most recent records as they come-in"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176
|
||||
#: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176
|
||||
#: Frame.cpp:123 Frame.cpp:176
|
||||
msgid "Verbose"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:123 master/EventMonitor/Frame.cpp:176
|
||||
#: ver1.0/EventMonitor/Frame.cpp:123 ver1.0/EventMonitor/Frame.cpp:176
|
||||
#: Frame.cpp:123 Frame.cpp:176
|
||||
msgid "Displays all levels of records"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178
|
||||
#: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178
|
||||
#: Frame.cpp:127 Frame.cpp:178
|
||||
msgid "Informational"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:127 master/EventMonitor/Frame.cpp:178
|
||||
#: ver1.0/EventMonitor/Frame.cpp:127 ver1.0/EventMonitor/Frame.cpp:178
|
||||
#: Frame.cpp:127 Frame.cpp:178
|
||||
msgid "Displays all records up to informational level"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180
|
||||
#: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180
|
||||
#: Frame.cpp:131 Frame.cpp:180
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:131 master/EventMonitor/Frame.cpp:180
|
||||
#: ver1.0/EventMonitor/Frame.cpp:131 ver1.0/EventMonitor/Frame.cpp:180
|
||||
#: Frame.cpp:131 Frame.cpp:180
|
||||
msgid "Displays all records up to warning level"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182
|
||||
#: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182
|
||||
#: Frame.cpp:135 Frame.cpp:182
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:135 master/EventMonitor/Frame.cpp:182
|
||||
#: ver1.0/EventMonitor/Frame.cpp:135 ver1.0/EventMonitor/Frame.cpp:182
|
||||
#: Frame.cpp:135 Frame.cpp:182
|
||||
msgid "Displays error level records only"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
|
||||
#: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146
|
||||
#: Frame.cpp:142 Frame.cpp:146
|
||||
#, c-format
|
||||
msgid "%s toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
|
||||
#: ver1.0/EventMonitor/Frame.cpp:142 ver1.0/EventMonitor/Frame.cpp:146
|
||||
#: Frame.cpp:142 Frame.cpp:146
|
||||
#, c-format
|
||||
msgid "Toggles display of %s toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:142 master/EventMonitor/Frame.cpp:146
|
||||
#: master/EventMonitor/Frame.cpp:185 ver1.0/EventMonitor/Frame.cpp:142
|
||||
#: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:185
|
||||
#: Frame.cpp:142 Frame.cpp:146 Frame.cpp:185
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:146 master/EventMonitor/Frame.cpp:149
|
||||
#: ver1.0/EventMonitor/Frame.cpp:146 ver1.0/EventMonitor/Frame.cpp:149
|
||||
#: Frame.cpp:146 Frame.cpp:149
|
||||
msgid "&View"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:154 ver1.0/EventMonitor/Frame.cpp:154
|
||||
#: Frame.cpp:154
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:156 ver1.0/EventMonitor/Frame.cpp:156
|
||||
#: Frame.cpp:156
|
||||
msgid "Copy All"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:161 ver1.0/EventMonitor/Frame.cpp:161
|
||||
#: Frame.cpp:161
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:164 ver1.0/EventMonitor/Frame.cpp:164
|
||||
#: Frame.cpp:164
|
||||
msgid "Auto Scroll"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/Frame.cpp:189 ver1.0/EventMonitor/Frame.cpp:189
|
||||
#: Frame.cpp:189
|
||||
msgid "Trace Log"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.Feature-2.idtx:4
|
||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: ver1.0/EventMonitor/MSIBuild/en_US.x64.Debug.Feature-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.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "Real-time display of internal events"
|
||||
msgstr ""
|
||||
|
||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Debug.Shortcut-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.x64.Debug.Shortcut-2.idtx:4
|
||||
#: master/EventMonitor/MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
#: ver1.0/EventMonitor/MSIBuild/en_US.Win32.Debug.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.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.Win32.Release.Shortcut-2.idtx:4
|
||||
#: MSIBuild/en_US.x64.Release.Shortcut-2.idtx:4
|
||||
msgid "EVENTM~1|GÉANTLink Event Monitor"
|
||||
msgstr ""
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Translators:
|
||||
# Eric Hoch <eric.hoch@hhu.de>, 2016
|
||||
# eduroam_devel <stefan.winter@restena.lu>, 2016
|
||||
# Eric Hoch <eric.hoch@hhu.de>, 2016
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: EventMonitor\n"
|
||||
"POT-Creation-Date: 2017-02-02 18:14+0100\n"
|
||||
"PO-Revision-Date: 2016-08-27 11:21+0000\n"
|
||||
"Last-Translator: eduroam_devel <stefan.winter@restena.lu>, 2016\n"
|
||||
"Last-Translator: Eric Hoch <eric.hoch@hhu.de>, 2016\n"
|
||||
"Language-Team: German (https://www.transifex.com/eduroam_devel/teams/11799/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Translators:
|
||||
# Zenon Mousmoulas <zenon@mousmoulas.gr>, 2016
|
||||
# Vicky Kons <vickyk@admin.grnet.gr>, 2016
|
||||
# Zenon Mousmoulas <zenon@mousmoulas.gr>, 2016
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: EventMonitor\n"
|
||||
"POT-Creation-Date: 2017-02-02 18:14+0100\n"
|
||||
"PO-Revision-Date: 2016-08-27 11:21+0000\n"
|
||||
"Last-Translator: Vicky Kons <vickyk@admin.grnet.gr>, 2016\n"
|
||||
"Last-Translator: Zenon Mousmoulas <zenon@mousmoulas.gr>, 2016\n"
|
||||
"Language-Team: Greek (https://www.transifex.com/eduroam_devel/teams/11799/el/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Translators:
|
||||
# Indrek Rokk <indrek.rokk@eenet.ee>, 2018
|
||||
# Anne M <anne@eenet.ee>, 2018
|
||||
# Anne M <anne@eenet.ee>, 2019
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: EventMonitor\n"
|
||||
"POT-Creation-Date: 2017-02-02 18:14+0100\n"
|
||||
"PO-Revision-Date: 2016-08-27 11:21+0000\n"
|
||||
"Last-Translator: Anne M <anne@eenet.ee>, 2018\n"
|
||||
"Last-Translator: Anne M <anne@eenet.ee>, 2019\n"
|
||||
"Language-Team: Estonian (https://www.transifex.com/eduroam_devel/teams/11799/et/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -79,10 +79,9 @@ msgid ""
|
||||
"(Run As Administrator) or be a member of Performance Log Users group to "
|
||||
"start event tracing session."
|
||||
msgstr ""
|
||||
"Puudub pääsuluba sündmuse seansi: sündmuse jälitusseansi alustamiseks on Sul"
|
||||
" vaja administraatoriõigusi (käivita administraatorina, inglise keeles Run "
|
||||
"As Administrator) või kuulumist soorituste logi (Performance Log) kasutajate"
|
||||
" gruppi"
|
||||
"Puudub pääsuluba: sündmuse jälitusseansi loomiseks vajad "
|
||||
"administraatoriõigusi (Run As Administrator) või kuulumist soorituste logi "
|
||||
"kasutajagruppi (Performance Log Users)"
|
||||
|
||||
#: master/EventMonitor/ETWLog.cpp:235 ver1.0/EventMonitor/ETWLog.cpp:235
|
||||
#: ver1.1/EventMonitor/ETWLog.cpp:235
|
||||
|
@@ -15,7 +15,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EAPTTLS", "EAPMethods\EAPTT
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{E66A3FE1-4EE4-401F-8EAD-BE518B230393}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinStd", "lib\WinStd\build\WinStd-15.0.vcxproj", "{47399D91-7EB9-41DE-B521-514BA5DB0C43}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinStd", "lib\WinStd\build\WinStd-16.0.vcxproj", "{47399D91-7EB9-41DE-B521-514BA5DB0C43}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utilities", "Utilities", "{7B5EC9B7-208C-426A-941D-DAF9271BD4A4}"
|
||||
EndProject
|
||||
@@ -45,7 +45,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MsiUseFeature", "MsiUseFeat
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EventMonitor", "EventMonitor\EventMonitor.vcxproj", "{E0D0725B-B2FC-4225-9481-CA9B1B6306F2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxExtend", "lib\wxExtend\build\wxExtendLib-15.0.vcxproj", "{D3E29951-D9F5-486D-A167-20AE8E90B1FA}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxExtend", "lib\wxExtend\build\wxExtendLib-16.0.vcxproj", "{D3E29951-D9F5-486D-A167-20AE8E90B1FA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WLANManager", "WLANManager\WLANManager.vcxproj", "{BFCAA3B4-97A9-4EA9-8FE1-F30280142BCC}"
|
||||
EndProject
|
||||
@@ -57,6 +57,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EapHost", "lib\EapHost\buil
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EapHost_UI", "lib\EapHost_UI\build\EapHost_UI.vcxproj", "{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}"
|
||||
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
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
@@ -319,6 +323,30 @@ Global
|
||||
{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|x64.Build.0 = Release|x64
|
||||
{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|x86.ActiveCfg = Release|Win32
|
||||
{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}.Release|x86.Build.0 = Release|Win32
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{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}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Debug|x86.Build.0 = Debug|Win32
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|x64.ActiveCfg = Release|x64
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|x64.Build.0 = Release|x64
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|x86.ActiveCfg = Release|Win32
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129}.Release|x86.Build.0 = Release|Win32
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{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}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Debug|x86.Build.0 = Debug|Win32
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|x64.ActiveCfg = Release|x64
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|x64.Build.0 = Release|x64
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|x86.ActiveCfg = Release|Win32
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -345,8 +373,10 @@ Global
|
||||
{7AF5B922-7C17-428A-97E0-09E3B41A684D} = {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}
|
||||
{114A70BB-8698-4A0C-8C90-58F22EDD8129} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393}
|
||||
{34680813-3A52-46FB-B5A8-1E4BBF770855} = {E66A3FE1-4EE4-401F-8EAD-BE518B230393}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {7A3D177B-1258-49A3-893B-79C928DB6A25}
|
||||
SolutionGuid = {E52A6A8F-2AF5-43C7-8E01-9808E865BCF0}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
@@ -2,59 +2,36 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GÉANTLink MSI\n"
|
||||
"POT-Creation-Date: 2016-11-08 11:55+0100\n"
|
||||
"POT-Creation-Date: 2019-08-12 14:04+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"X-Poedit-Basepath: ../../../..\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Language: en_US\n"
|
||||
"X-Generator: Poedit 2.2.3\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: master/MSI/Base/Main\n"
|
||||
"X-Poedit-SearchPath-1: ver1.0/MSI/Base/Main\n"
|
||||
"X-Poedit-SearchPath-0: Main\n"
|
||||
|
||||
#: 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.x64.Debug.LaunchCondition-2.idtx:4
|
||||
#: master/MSI/Base/Main/en_US.x64.Release.LaunchCondition-2.idtx:4
|
||||
#: ver1.0/MSI/Base/Main/en_US.Win32.Debug.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.Release.LaunchCondition-2.idtx:4
|
||||
#: Main/en_US.ARM64.Release.LaunchCondition-2.idtx:4
|
||||
#: Main/en_US.Win32.Release.LaunchCondition-2.idtx:4
|
||||
#: Main/en_US.x64.Release.LaunchCondition-2.idtx:4
|
||||
msgid "[ProductName] requires Windows Vista or later version of Windows."
|
||||
msgstr ""
|
||||
|
||||
#: master/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:4
|
||||
#: master/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:5
|
||||
#: master/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:4
|
||||
#: master/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:5
|
||||
#: master/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:4
|
||||
#: master/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:5
|
||||
#: master/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:4
|
||||
#: master/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:5
|
||||
#: ver1.0/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:4
|
||||
#: ver1.0/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:5
|
||||
#: ver1.0/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:4
|
||||
#: ver1.0/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:5
|
||||
#: ver1.0/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:4
|
||||
#: 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:5
|
||||
#: Main/en_US.ARM64.Release.Property-2.idtx:4
|
||||
#: Main/en_US.ARM64.Release.Property-2.idtx:5
|
||||
#: Main/en_US.Win32.Release.Property-2.idtx:4
|
||||
#: Main/en_US.Win32.Release.Property-2.idtx:5
|
||||
#: Main/en_US.x64.Release.Property-2.idtx:4
|
||||
#: Main/en_US.x64.Release.Property-2.idtx:5
|
||||
msgid "http://www.geant.org/"
|
||||
msgstr ""
|
||||
|
||||
#: master/MSI/Base/Main/en_US.Win32.Debug.Property-2.idtx:6
|
||||
#: master/MSI/Base/Main/en_US.Win32.Release.Property-2.idtx:6
|
||||
#: master/MSI/Base/Main/en_US.x64.Debug.Property-2.idtx:6
|
||||
#: master/MSI/Base/Main/en_US.x64.Release.Property-2.idtx:6
|
||||
#: ver1.0/MSI/Base/Main/en_US.Win32.Debug.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.Release.Property-2.idtx:6
|
||||
#: Main/en_US.ARM64.Release.Property-2.idtx:6
|
||||
#: Main/en_US.Win32.Release.Property-2.idtx:6
|
||||
#: Main/en_US.x64.Release.Property-2.idtx:6
|
||||
msgid "https://github.com/Amebis/GEANTLink/releases"
|
||||
msgstr ""
|
||||
|
Submodule MSI/MSIBuild updated: 332709b1d0...320f7e9ee5
@@ -76,7 +76,8 @@ static int MsiUseFeature()
|
||||
}
|
||||
|
||||
|
||||
int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
|
||||
_Use_decl_annotations_
|
||||
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hInstance);
|
||||
UNREFERENCED_PARAMETER(hPrevInstance);
|
||||
|
@@ -30,26 +30,26 @@
|
||||
<ProjectGuid>{679D03C5-CD70-4FFA-93F8-A4AB3637509B}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>MsiUseFeature</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -57,21 +57,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -147,7 +147,7 @@
|
||||
<ResourceCompile Include="MsiUseFeature.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-16.0.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
@@ -1,7 +1,9 @@
|
||||
# MsiUseFeature
|
||||
|
||||
Checks the installation state of the given feature of GÉANTLink product
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
MsiUseFeature <feature name> [language]
|
||||
```
|
||||
@@ -11,7 +13,8 @@ MsiUseFeature <feature name> [language]
|
||||
|
||||
Note: The MSI product code changes on every release. Therefore, `MsiUseFeature` utility with identical version should be used.
|
||||
|
||||
Return codes:
|
||||
### Return codes
|
||||
|
||||
- -1 = Invalid parameters
|
||||
- 0 = Success
|
||||
- 1 = The product is not installed, or feature state is unknown
|
||||
|
@@ -27,6 +27,7 @@
|
||||
|
||||
#include <Windows.h>
|
||||
#include <Msi.h>
|
||||
#include <shellapi.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#include <memory>
|
||||
|
50
README.md
50
README.md
@@ -3,17 +3,21 @@
|
||||
Suite of EAP supplicants for Microsoft Windows - IEEE 802.1X clients for enterprise network authentication
|
||||
|
||||
## Features
|
||||
|
||||
- Integrates into Windows seamlessly
|
||||
- Wired and wireless network support
|
||||
|
||||
### Authentication methods
|
||||
|
||||
- EAP-TTLS with the following inner methods:
|
||||
- PAP
|
||||
- MSCHAPv2
|
||||
- EAP-MSCHAPv2
|
||||
- EAP-GTC: Challenge/Response and Password authentication modes
|
||||
- System-installed EAP method chaining (experimental)
|
||||
|
||||
### Security
|
||||
|
||||
- Microsoft Windows Credential Manager stored user credentials
|
||||
- User credentials can be shared between different network profiles, regardless of their connection: wired or wireless
|
||||
- Encrypted EapHost inter-process communication
|
||||
@@ -23,20 +27,24 @@ Suite of EAP supplicants for Microsoft Windows - IEEE 802.1X clients for enterpr
|
||||
- Post-authentication CRL check
|
||||
|
||||
### Diagnostics
|
||||
|
||||
- Reporting to Event Log channels: Operational and Analytic verbosity
|
||||
- Real-time event monitoring utility
|
||||
|
||||
### User interface
|
||||
|
||||
- Customizable helpdesk contact information
|
||||
- Lockable network profile configuration
|
||||
|
||||
### Deployment
|
||||
|
||||
- Released as multi-lingual x86, x64, and ARM64 MSI packages; Group Policy deployment supported
|
||||
- [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)
|
||||
- [CredWrite utility](https://github.com/Amebis/GEANTLink/tree/ver1.1/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
|
||||
- [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/master/CredWrite) for automated user credential import to Credential Manager
|
||||
- [WLANManager utility](https://github.com/Amebis/GEANTLink/tree/master/WLANManager) to allow network profile configuration dialog shortcuts
|
||||
|
||||
### Supported operating systems
|
||||
|
||||
- Windows Vista, Windows Server 2008
|
||||
- Windows 7, Windows Server 2008 R2
|
||||
- Windows 8 Desktop, Windows Server 2012
|
||||
@@ -44,44 +52,53 @@ Suite of EAP supplicants for Microsoft Windows - IEEE 802.1X clients for enterpr
|
||||
- Windows 10 Desktop, Windows Server 2016
|
||||
|
||||
## Download
|
||||
|
||||
Binaries are available for download [here](https://github.com/Amebis/GEANTLink/releases).
|
||||
|
||||
## Building
|
||||
|
||||
### Building Environment Requirements
|
||||
|
||||
- Microsoft Windows Vista or later
|
||||
- Microsoft Visual Studio 2017
|
||||
- Microsoft Visual Studio 2019
|
||||
- _msgfmt.exe_ from [gettext](https://www.gnu.org/software/gettext/);
|
||||
Hint: [Poedit](https://poedit.net/) contains up-to-date binary Win32 compiled gettext-utilities. Install it and add `GettextTools\bin` folder to the system path.
|
||||
- _sed.exe_ and _grep.exe_
|
||||
Hint: [Git for Windows](https://gitforwindows.org/) contains up-to-date set of GNU utilities.
|
||||
- _MsiDb.Exe_ and other command line utilities for MSI packaging distributed as a part of Microsoft Windows SDK (installed with Visual Studio). Add SDK's `Bin` folder to the system path.
|
||||
|
||||
### wxWidgets
|
||||
|
||||
GÉANTLink is using wxWidgets static libraries. Since upstream wxWidgets libraries don't support ARM64 yet, a clone with ARM64 support was prepared at [GitHub](https://github.com/Amebis/wxWidgets.git).
|
||||
|
||||
#### Compiling wxWidgets x86 static libraries
|
||||
1. Start _x86 Native Tools Command Prompt for VS 2017_
|
||||
|
||||
1. Start _x86 Native Tools Command Prompt for VS 2019_
|
||||
2. Change working folder to `build\msw`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 BUILD=release`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 BUILD=release`
|
||||
|
||||
#### Compiling wxWidgets x64 static libraries
|
||||
1. Start _x64 Native Tools Command Prompt for VS 2017_
|
||||
|
||||
1. Start _x64 Native Tools Command Prompt for VS 2019_
|
||||
2. Change working folder to `build\msw`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 TARGET_CPU=X64`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 TARGET_CPU=X64 BUILD=release`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=X64`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=X64 BUILD=release`
|
||||
|
||||
#### Compiling wxWidgets ARM64 static libraries
|
||||
|
||||
1. Start command prompt
|
||||
2. Change working folder to `build\msw`
|
||||
3. Run: `"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 TARGET_CPU=ARM64 USE_OPENGL=0`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=141 TARGET_CPU=ARM64 USE_OPENGL=0 BUILD=release`
|
||||
3. Run: `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"`
|
||||
3. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=ARM64 USE_OPENGL=0`
|
||||
4. Run: `nmake /f makefile.vc /ls RUNTIME_LIBS=static SHARED=0 COMPILER_VERSION=142 TARGET_CPU=ARM64 USE_OPENGL=0 BUILD=release`
|
||||
|
||||
#### Specifying wxWidgets path
|
||||
|
||||
GÉANTLink compilation references wxWidgets libraries using `WXWIN` environment variable. Please set it to wxWidgets folder (i.e. `C:\SDK\wxWidgets`).
|
||||
|
||||
### Digital Signing of Build Outputs
|
||||
|
||||
In order to have the build process digitally sign output files, one should provide the following:
|
||||
|
||||
1. A signing certificate installed in the current user’s certificate store.
|
||||
@@ -94,6 +111,7 @@ Please note that only Release builds are configured for timestamp signing. Debug
|
||||
### Building
|
||||
|
||||
#### Building in Visual Studio IDE
|
||||
|
||||
GÉANTLink has some submodules. When cloning Git repository, make sure to use `--recursive` Git switch to clone submodules too. Example:
|
||||
`git clone --recursive "https://github.com/Amebis/GEANTLink.git" "C:\Projects\GEANTLink"`
|
||||
|
||||
@@ -108,6 +126,7 @@ Next, one must configure a network profile actually using GÉANTLink for the aut
|
||||
GÉANTLink EAP modules are divided into two DLLs: backend (i.e. _EAPTTLS.dll_) and GUI (i.e. _EAPTTLSUI.dll_).
|
||||
|
||||
##### Backend DLL
|
||||
|
||||
The backend DLL is loaded by _Eap3Host.exe_ process when connecting to the network. One approach to debug the module is to start Visual C++ elevated, open _GEANTLink.sln_, and attach to the running _Eap3Host.exe_ process.
|
||||
|
||||
On initial connection attempt _Eap3Host.exe_ will load the DLL and will not release it until _EapHost_ service is restarted. To release our DLL (i.e. for rebuild) you have to restart _EapHost_ service manually or run `nmake register` again.
|
||||
@@ -115,6 +134,7 @@ On initial connection attempt _Eap3Host.exe_ will load the DLL and will not rele
|
||||
To debug early life of our backend DLL, uncomment `Sleep(10000)` in `DllMain()` of the module, and set breakpoints. This should give you plenty of time to catch emerging _Eap3Host.exe_ process and attach the debugger to it before our DLL starts servicing authentication.
|
||||
|
||||
##### GUI DLL
|
||||
|
||||
The GUI DLL is loaded by _DllHost.exe_ process on XML profile configuration import/export and when interactive user interface is required.
|
||||
|
||||
A few seconds after desired function call has finished, _DllHost.exe_ terminates and releases the DLL.
|
||||
@@ -122,7 +142,8 @@ A few seconds after desired function call has finished, _DllHost.exe_ terminates
|
||||
To debug early life of our GUI DLL, uncomment `Sleep(10000)` in `DllMain()` of the module, and set breakpoints. This should give you plenty of time to attach the debugger to _DllHost.exe_ process before our DLL starts.
|
||||
|
||||
#### Building in command line
|
||||
Open _x64 Native Tools Command Prompt for VS 2017_ for building.
|
||||
|
||||
Open _x64 Native Tools Command Prompt for VS 2019_ for building.
|
||||
|
||||
Use Microsoft NMAKE to build the project.
|
||||
|
||||
@@ -137,4 +158,5 @@ Command | Explanation
|
||||
The `/ls` flag can be appended to the commands above to reduce NMAKE’s verbosity. You can combine multiple targets (i.e. nmake Unregister Clean). Please, see NMAKE reference for further reading.
|
||||
|
||||
### Translating into your language
|
||||
|
||||
GÉANTLink is fully localizable. We kindly invite you to help [translating it on Transifex](https://www.transifex.com/eduroam_devel/geantlink/).
|
||||
|
7
WLANManager/MSIBuild/build_all.bat
Normal file
7
WLANManager/MSIBuild/build_all.bat
Normal file
@@ -0,0 +1,7 @@
|
||||
@echo off
|
||||
nmake.exe /ls All LANG=en_US CFG=Debug PLAT=Win32
|
||||
nmake.exe /ls All LANG=en_US CFG=Debug PLAT=x64
|
||||
nmake.exe /ls All LANG=en_US CFG=Debug PLAT=ARM64
|
||||
nmake.exe /ls All LANG=en_US CFG=Release PLAT=Win32
|
||||
nmake.exe /ls All LANG=en_US CFG=Release PLAT=x64
|
||||
nmake.exe /ls All LANG=en_US CFG=Release PLAT=ARM64
|
7
WLANManager/MSIBuild/clean_all.bat
Normal file
7
WLANManager/MSIBuild/clean_all.bat
Normal file
@@ -0,0 +1,7 @@
|
||||
@echo off
|
||||
nmake.exe /ls Clean LANG=en_US CFG=Debug PLAT=Win32
|
||||
nmake.exe /ls Clean LANG=en_US CFG=Debug PLAT=x64
|
||||
nmake.exe /ls Clean LANG=en_US CFG=Debug PLAT=ARM64
|
||||
nmake.exe /ls Clean LANG=en_US CFG=Release PLAT=Win32
|
||||
nmake.exe /ls Clean LANG=en_US CFG=Release PLAT=x64
|
||||
nmake.exe /ls Clean LANG=en_US CFG=Release PLAT=ARM64
|
@@ -130,6 +130,7 @@ static int WLANManager()
|
||||
|
||||
// Launch WLAN profile config dialog.
|
||||
WLAN_REASON_CODE wlrc = L2_REASON_CODE_SUCCESS;
|
||||
#pragma warning(suppress: 6387) // TODO: MSDN nor SAL annotation don't indicate NULL HWND are OK with WlanUIEditProfile().
|
||||
DWORD dwResult = WlanUIEditProfile(WLAN_UI_API_VERSION, pwcArglist[2], &(interfaces->InterfaceInfo[i].InterfaceGuid), NULL, WLSecurityPage, NULL, &wlrc);
|
||||
if (dwResult != ERROR_SUCCESS) {
|
||||
// WlanUIEditProfile() displays own error dialog on failure.
|
||||
@@ -153,7 +154,8 @@ static int WLANManager()
|
||||
}
|
||||
|
||||
|
||||
int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
|
||||
_Use_decl_annotations_
|
||||
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hInstance);
|
||||
UNREFERENCED_PARAMETER(hPrevInstance);
|
||||
|
@@ -1,14 +1,18 @@
|
||||
#WLANManager
|
||||
# WLANManager
|
||||
|
||||
Invokes standard Windows Wireless Network Properties dialog
|
||||
|
||||
##Usage
|
||||
## Usage
|
||||
|
||||
```
|
||||
WLANManager profile <name> [interface <name>]
|
||||
WLANManager profile <profile name> [interface <interface name>]
|
||||
```
|
||||
|
||||
- `name` - The name of the network profile (not neccessarely the same as SSID)
|
||||
- `profile name` - The name of the network profile (not neccessarely the same as SSID)
|
||||
- `interface name` - The name of the specific network interface to search the profile at
|
||||
|
||||
### Return codes
|
||||
|
||||
Return codes:
|
||||
- -1 = Invalid parameters
|
||||
- 0 = Success
|
||||
- 1 = Error parsing command line
|
||||
|
@@ -29,6 +29,7 @@
|
||||
#include <Windows.h>
|
||||
#include <CommCtrl.h>
|
||||
#include <devguid.h>
|
||||
#include <shellapi.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#include <memory>
|
||||
|
@@ -30,26 +30,26 @@
|
||||
<ProjectGuid>{BFCAA3B4-97A9-4EA9-8FE1-F30280142BCC}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>WLANManager</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -57,21 +57,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -144,7 +144,7 @@
|
||||
<ResourceCompile Include="WLANManager.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-15.0.vcxproj">
|
||||
<ProjectReference Include="..\lib\WinStd\build\WinStd-16.0.vcxproj">
|
||||
<Project>{47399d91-7eb9-41de-b521-514ba5db0c43}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
@@ -2,22 +2,21 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WLANManager\n"
|
||||
"POT-Creation-Date: 2016-11-08 11:51+0100\n"
|
||||
"POT-Creation-Date: 2019-08-12 14:09+0200\n"
|
||||
"PO-Revision-Date: 2016-06-02 12:27+0200\n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"X-Poedit-Basepath: ../../..\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Language: en_US\n"
|
||||
"X-Generator: Poedit 2.2.3\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: _\n"
|
||||
"X-Poedit-SearchPath-0: master/WLANManager\n"
|
||||
"X-Poedit-SearchPath-1: ver1.0/WLANManager\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.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.x64.Debug.Feature-2.idtx:4
|
||||
@@ -25,6 +24,8 @@ msgstr ""
|
||||
msgid "WLAN Manager"
|
||||
msgstr ""
|
||||
|
||||
#: MSIBuild/en_US.ARM64.Debug.Feature-2.idtx:4
|
||||
#: MSIBuild/en_US.ARM64.Release.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.x64.Debug.Feature-2.idtx:4
|
||||
|
@@ -29,15 +29,19 @@
|
||||
<IncludePath>$(WXWIN)\include\msvc;$(WXWIN)\include;$(IncludePath)</IncludePath>
|
||||
<SourcePath>$(WXWIN)\src\aui;$(WXWIN)\src\cocoa;$(WXWIN)\src\common;$(WXWIN)\src\dfb;$(WXWIN)\src\expat;$(WXWIN)\src\generic;$(WXWIN)\src\gtk;$(WXWIN)\src\gtk1;$(WXWIN)\src\html;$(WXWIN)\src\jpeg;$(WXWIN)\src\motif;$(WXWIN)\src\msdos;$(WXWIN)\src\msw;$(WXWIN)\src\os2;$(WXWIN)\src\osx;$(WXWIN)\src\png;$(WXWIN)\src\propgrid;$(WXWIN)\src\regex;$(WXWIN)\src\ribbon;$(WXWIN)\src\richtext;$(WXWIN)\src\stc;$(WXWIN)\src\tiff;$(WXWIN)\src\univ;$(WXWIN)\src\unix;$(WXWIN)\src\x11;$(WXWIN)\src\xml;$(WXWIN)\src\xrc;$(WXWIN)\src\zlib;$(SourcePath)</SourcePath>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<CodeAnalysisRuleSet>NativeRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<RunCodeAnalysis>true</RunCodeAnalysis>
|
||||
<CAExcludePath>$(WXWIN);$(CAExcludePath)</CAExcludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x0600;ISOLATION_AWARE_ENABLED=1;SECURITY_WIN32;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;EAP_TLS=1;wxMSVC_VERSION=$(PlatformToolsetVersion);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x0600;ISOLATION_AWARE_ENABLED=1;SECURITY_WIN32;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;EAP_TLS=1;wxMSVC_VERSION=$(PlatformToolsetVersion);WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>StdAfx.h</PrecompiledHeaderFile>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<StringPooling>true</StringPooling>
|
||||
<EnablePREfast>true</EnablePREfast>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
@@ -32,6 +32,7 @@
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
|
@@ -29,7 +29,7 @@
|
||||
// Product version as a single DWORD
|
||||
// Note: Used for version comparison within C/C++ code.
|
||||
//
|
||||
#define PRODUCT_VERSION 0x01010b00
|
||||
#define PRODUCT_VERSION 0x01020b00
|
||||
|
||||
//
|
||||
// Product version by components
|
||||
@@ -38,27 +38,27 @@
|
||||
// separately.
|
||||
//
|
||||
#define PRODUCT_VERSION_MAJ 1
|
||||
#define PRODUCT_VERSION_MIN 1
|
||||
#define PRODUCT_VERSION_MIN 2
|
||||
#define PRODUCT_VERSION_REV 11
|
||||
#define PRODUCT_VERSION_BUILD 0
|
||||
|
||||
//
|
||||
// Human readable product version and build year for UI
|
||||
//
|
||||
#define PRODUCT_VERSION_STR "1.1h"
|
||||
#define PRODUCT_BUILD_YEAR_STR "2018"
|
||||
#define PRODUCT_VERSION_STR "1.2g"
|
||||
#define PRODUCT_BUILD_YEAR_STR "2019"
|
||||
|
||||
//
|
||||
// Numerical version presentation for ProductVersion propery in
|
||||
// MSI packages (syntax: N.N[.N[.N]])
|
||||
//
|
||||
#define PRODUCT_VERSION_INST "1.1.11"
|
||||
#define PRODUCT_VERSION_INST "1.2.11"
|
||||
|
||||
//
|
||||
// The product code for ProductCode property in MSI packages
|
||||
// Replace with new on every version change, regardless how minor it is.
|
||||
//
|
||||
#define PRODUCT_VERSION_GUID "{DB1D7807-D9E7-4BB8-8B47-4631256F1C4B}"
|
||||
#define PRODUCT_VERSION_GUID "{9724DC5C-8574-47AF-9978-04ED7FA83EF4}"
|
||||
|
||||
//
|
||||
// Product vendor
|
||||
|
2
lib/.gitignore
vendored
2
lib/.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
/GTC
|
||||
/GTC_UI
|
@@ -29,26 +29,26 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{AD6816A0-9600-4E01-8C49-39D03D1E791F}</ProjectGuid>
|
||||
<RootNamespace>EAPBase</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</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>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -56,21 +56,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -127,6 +127,7 @@
|
||||
<ClInclude Include="..\include\EAPXML.h" />
|
||||
<ClInclude Include="..\include\Method.h" />
|
||||
<ClInclude Include="..\include\Module.h" />
|
||||
<ClInclude Include="..\include\UIContext.h" />
|
||||
<ClInclude Include="..\src\StdAfx.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -143,6 +144,7 @@
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\UIContext.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Events\build\Events.vcxproj">
|
||||
|
@@ -32,6 +32,9 @@
|
||||
<ClInclude Include="..\include\Credentials.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\UIContext.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\StdAfx.cpp">
|
||||
@@ -52,5 +55,8 @@
|
||||
<ClCompile Include="..\src\EAP.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\UIContext.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@@ -83,7 +83,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Configuration to move from
|
||||
///
|
||||
config(_Inout_ config &&other);
|
||||
config(_Inout_ config &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies configuration
|
||||
@@ -101,7 +101,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
config& operator=(_Inout_ config &&other);
|
||||
config& operator=(_Inout_ config &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Clones this object
|
||||
@@ -187,7 +187,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Configuration to move from
|
||||
///
|
||||
config_method(_Inout_ config_method &&other);
|
||||
config_method(_Inout_ config_method &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies configuration
|
||||
@@ -205,7 +205,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
config_method& operator=(_Inout_ config_method &&other);
|
||||
config_method& operator=(_Inout_ config_method &&other) noexcept;
|
||||
|
||||
/// \name XML management
|
||||
/// @{
|
||||
@@ -271,7 +271,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Configuration to move from
|
||||
///
|
||||
config_method_with_cred(_Inout_ config_method_with_cred &&other);
|
||||
config_method_with_cred(_Inout_ config_method_with_cred &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies configuration
|
||||
@@ -289,7 +289,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
config_method_with_cred& operator=(_Inout_ config_method_with_cred &&other);
|
||||
config_method_with_cred& operator=(_Inout_ config_method_with_cred &&other) noexcept;
|
||||
|
||||
/// \name XML management
|
||||
/// @{
|
||||
@@ -335,7 +335,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Configuration to move from
|
||||
///
|
||||
config_provider(_Inout_ config_provider &&other);
|
||||
config_provider(_Inout_ config_provider &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies configuration
|
||||
@@ -353,7 +353,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
config_provider& operator=(_Inout_ config_provider &&other);
|
||||
config_provider& operator=(_Inout_ config_provider &&other) noexcept;
|
||||
|
||||
virtual config* clone() const;
|
||||
|
||||
@@ -431,7 +431,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Configuration to move from
|
||||
///
|
||||
config_connection(_Inout_ config_connection &&other);
|
||||
config_connection(_Inout_ config_connection &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies configuration
|
||||
@@ -449,7 +449,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
config_connection& operator=(_Inout_ config_connection &&other);
|
||||
config_connection& operator=(_Inout_ config_connection &&other) noexcept;
|
||||
|
||||
virtual config* clone() const;
|
||||
|
||||
|
@@ -86,7 +86,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Credentials to move from
|
||||
///
|
||||
credentials(_Inout_ credentials &&other);
|
||||
credentials(_Inout_ credentials &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies credentials
|
||||
@@ -104,7 +104,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
credentials& operator=(_Inout_ credentials &&other);
|
||||
credentials& operator=(_Inout_ credentials &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Resets credentials
|
||||
@@ -216,7 +216,7 @@ namespace eap
|
||||
///
|
||||
virtual source_t combine(
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ const credentials *cred_cached,
|
||||
_In_ const config_method &cfg,
|
||||
_In_opt_z_ LPCTSTR pszTargetName) = 0;
|
||||
@@ -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) noexcept;
|
||||
|
||||
///
|
||||
/// 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) noexcept;
|
||||
|
||||
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_opt_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ const credentials *cred_cached,
|
||||
_In_ const config_method &cfg,
|
||||
_In_opt_z_ LPCTSTR pszTargetName);
|
||||
};
|
||||
|
||||
|
||||
///
|
||||
/// Password based method credentials
|
||||
///
|
||||
@@ -262,7 +354,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Credentials to move from
|
||||
///
|
||||
credentials_pass(_Inout_ credentials_pass &&other);
|
||||
credentials_pass(_Inout_ credentials_pass &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies credentials
|
||||
@@ -280,7 +372,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
credentials_pass& operator=(_Inout_ credentials_pass &&other);
|
||||
credentials_pass& operator=(_Inout_ credentials_pass &&other) noexcept;
|
||||
|
||||
virtual config* clone() const;
|
||||
virtual void clear();
|
||||
@@ -331,7 +423,7 @@ namespace eap
|
||||
///
|
||||
virtual source_t combine(
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ const credentials *cred_cached,
|
||||
_In_ const config_method &cfg,
|
||||
_In_opt_z_ LPCTSTR pszTargetName);
|
||||
@@ -373,7 +465,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Credentials to move from
|
||||
///
|
||||
credentials_connection(_Inout_ credentials_connection &&other);
|
||||
credentials_connection(_Inout_ credentials_connection &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies credentials
|
||||
@@ -391,7 +483,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
credentials_connection& operator=(_Inout_ credentials_connection &&other);
|
||||
credentials_connection& operator=(_Inout_ credentials_connection &&other) noexcept;
|
||||
|
||||
virtual config* clone() const;
|
||||
|
||||
|
@@ -262,7 +262,7 @@ inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ size_t &val);
|
||||
/// \param[inout] cursor Memory cursor
|
||||
/// \param[in] val String to pack
|
||||
///
|
||||
template<class _Elem, class _Traits, class _Ax> inline void operator<<(_Inout_ eap::cursor_out &cursor, _In_ const std::basic_string<_Elem, _Traits, _Ax> &val);
|
||||
template<class _Traits, class _Ax> inline void operator<<(_Inout_ eap::cursor_out &cursor, _In_ const std::basic_string<char, _Traits, _Ax> &val);
|
||||
|
||||
///
|
||||
/// Returns packed size of a string
|
||||
@@ -271,7 +271,7 @@ template<class _Elem, class _Traits, class _Ax> inline void operator<<(_Inout_ e
|
||||
///
|
||||
/// \returns Size of data when packed (in bytes)
|
||||
///
|
||||
template<class _Elem, class _Traits, class _Ax> inline size_t pksizeof(_In_ const std::basic_string<_Elem, _Traits, _Ax> &val);
|
||||
template<class _Traits, class _Ax> inline size_t pksizeof(_In_ const std::basic_string<char, _Traits, _Ax> &val);
|
||||
|
||||
///
|
||||
/// Unpacks a string
|
||||
@@ -279,7 +279,7 @@ template<class _Elem, class _Traits, class _Ax> inline size_t pksizeof(_In_ cons
|
||||
/// \param[inout] cursor Memory cursor
|
||||
/// \param[out] val String to unpack to
|
||||
///
|
||||
template<class _Elem, class _Traits, class _Ax> inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ std::basic_string<_Elem, _Traits, _Ax> &val);
|
||||
template<class _Traits, class _Ax> inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ std::basic_string<char, _Traits, _Ax> &val);
|
||||
|
||||
///
|
||||
/// Packs a wide string
|
||||
@@ -551,7 +551,7 @@ inline unsigned __int64 htonll(unsigned __int64 val);
|
||||
/// \param[in ] val A 24-bit unsigned number in host byte order
|
||||
/// \param[out] out A 24-bit unsigned number in network byte order
|
||||
///
|
||||
inline void hton24(_In_ unsigned int val, _Out_ unsigned char out[3]);
|
||||
inline void hton24(_In_ unsigned int val, _Out_writes_(3) unsigned char out[3]);
|
||||
|
||||
///
|
||||
/// Converts a 24-bit integer from TCP/IP network to host byte order.
|
||||
@@ -658,6 +658,9 @@ namespace eap
|
||||
///
|
||||
/// Constructor
|
||||
///
|
||||
/// Note: This constructor does not initialize data. Use sanitizing_blob_zf class when zero-initialization is required.
|
||||
///
|
||||
#pragma warning(suppress: 26495)
|
||||
inline sanitizing_blob_f()
|
||||
{
|
||||
}
|
||||
@@ -677,7 +680,7 @@ namespace eap
|
||||
///
|
||||
/// \param[inout] other BLOB to move from
|
||||
///
|
||||
inline sanitizing_blob_f(_Inout_ sanitizing_blob_f<N> &&other)
|
||||
inline sanitizing_blob_f(_Inout_ sanitizing_blob_f<N> &&other) noexcept
|
||||
{
|
||||
memcpy(data, other.data, N);
|
||||
}
|
||||
@@ -687,7 +690,7 @@ namespace eap
|
||||
///
|
||||
/// \param[inout] other Zero-initialized BLOB to move from
|
||||
///
|
||||
inline sanitizing_blob_f(_Inout_ sanitizing_blob_zf<N> &&other)
|
||||
inline sanitizing_blob_f(_Inout_ sanitizing_blob_zf<N> &&other) noexcept
|
||||
{
|
||||
memcpy(data, other.data, N);
|
||||
memset(other.data, 0, N);
|
||||
@@ -722,7 +725,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
inline sanitizing_blob_f& operator=(_Inout_ sanitizing_blob_f<N> &&other)
|
||||
inline sanitizing_blob_f& operator=(_Inout_ sanitizing_blob_f<N> &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other))
|
||||
memcpy(data, other.data, N);
|
||||
@@ -736,7 +739,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
inline sanitizing_blob_f& operator=(_Inout_ sanitizing_blob_zf<N> &&other)
|
||||
inline sanitizing_blob_f& operator=(_Inout_ sanitizing_blob_zf<N> &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other)) {
|
||||
memcpy(data, other.data, N);
|
||||
@@ -827,7 +830,7 @@ namespace eap
|
||||
///
|
||||
/// \param[inout] other Zero-initialized BLOB to move from
|
||||
///
|
||||
inline sanitizing_blob_zf(_Inout_ sanitizing_blob_zf<N> &&other) :
|
||||
inline sanitizing_blob_zf(_Inout_ sanitizing_blob_zf<N> &&other) noexcept :
|
||||
sanitizing_blob_f<N>(std::move(other))
|
||||
{
|
||||
memset(other.data, 0, N);
|
||||
@@ -848,7 +851,7 @@ namespace eap
|
||||
///
|
||||
/// \param[inout] other BLOB to move from
|
||||
///
|
||||
inline sanitizing_blob_zf(_Inout_ sanitizing_blob_f<N> &&other) :
|
||||
inline sanitizing_blob_zf(_Inout_ sanitizing_blob_f<N> &&other) noexcept :
|
||||
sanitizing_blob_f<N>(std::move(other))
|
||||
{
|
||||
}
|
||||
@@ -874,7 +877,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
inline sanitizing_blob_zf& operator=(_Inout_ sanitizing_blob_zf<N> &&other)
|
||||
inline sanitizing_blob_zf& operator=(_Inout_ sanitizing_blob_zf<N> &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other)) {
|
||||
memcpy(data, other.data, N);
|
||||
@@ -904,7 +907,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
inline sanitizing_blob_zf& operator=(_Inout_ sanitizing_blob_f<N> &&other)
|
||||
inline sanitizing_blob_zf& operator=(_Inout_ sanitizing_blob_f<N> &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other))
|
||||
memcpy(data, other.data, N);
|
||||
@@ -1062,59 +1065,66 @@ inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ size_t &val)
|
||||
#endif
|
||||
|
||||
|
||||
template<class _Elem, class _Traits, class _Ax>
|
||||
inline void operator<<(_Inout_ eap::cursor_out &cursor, _In_ const std::basic_string<_Elem, _Traits, _Ax> &val)
|
||||
template<class _Traits, class _Ax>
|
||||
inline void operator<<(_Inout_ eap::cursor_out &cursor, _In_ const std::basic_string<char, _Traits, _Ax> &val)
|
||||
{
|
||||
size_t count = val.length();
|
||||
assert(strlen(val.c_str()) == count); // String should not contain zero terminators.
|
||||
size_t size = sizeof(_Elem)*(count + 1);
|
||||
size_t size = sizeof(char)*(count + 1);
|
||||
auto ptr_end = cursor.ptr + size;
|
||||
assert(ptr_end <= cursor.ptr_end);
|
||||
memcpy(cursor.ptr, (const _Elem*)val.c_str(), size);
|
||||
memcpy(cursor.ptr, (const char*)val.c_str(), size);
|
||||
cursor.ptr = ptr_end;
|
||||
}
|
||||
|
||||
|
||||
template<class _Elem, class _Traits, class _Ax>
|
||||
inline size_t pksizeof(_In_ const std::basic_string<_Elem, _Traits, _Ax> &val)
|
||||
template<class _Traits, class _Ax>
|
||||
inline size_t pksizeof(_In_ const std::basic_string<char, _Traits, _Ax> &val)
|
||||
{
|
||||
return sizeof(_Elem)*(val.length() + 1);
|
||||
return sizeof(char)*(val.length() + 1);
|
||||
}
|
||||
|
||||
|
||||
template<class _Elem, class _Traits, class _Ax>
|
||||
inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ std::basic_string<_Elem, _Traits, _Ax> &val)
|
||||
template<class _Traits, class _Ax>
|
||||
inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ std::basic_string<char, _Traits, _Ax> &val)
|
||||
{
|
||||
size_t count_max = cursor.ptr_end - cursor.ptr;
|
||||
size_t count = strnlen((const _Elem*&)cursor.ptr, count_max);
|
||||
size_t count = strnlen((const char*)cursor.ptr, count_max);
|
||||
assert(count < count_max); // String should be zero terminated.
|
||||
val.assign((const _Elem*&)cursor.ptr, count);
|
||||
cursor.ptr += sizeof(_Elem)*(count + 1);
|
||||
val.assign((const char*)cursor.ptr, count);
|
||||
cursor.ptr += sizeof(char)*(count + 1);
|
||||
}
|
||||
|
||||
|
||||
template<class _Traits, class _Ax>
|
||||
inline void operator<<(_Inout_ eap::cursor_out &cursor, _In_ const std::basic_string<wchar_t, _Traits, _Ax> &val)
|
||||
{
|
||||
std::string val_utf8;
|
||||
WideCharToMultiByte(CP_UTF8, 0, val, val_utf8, NULL, NULL);
|
||||
cursor << val_utf8;
|
||||
size_t count = val.length();
|
||||
assert(wcslen(val.c_str()) == count); // String should not contain zero terminators.
|
||||
size_t size_max = cursor.ptr_end - cursor.ptr;
|
||||
assert(size_max <= INT_MAX);
|
||||
size_t size = WideCharToMultiByte(CP_UTF8, 0, val.c_str(), (int)count, (char*)cursor.ptr, (int)size_max, NULL, NULL);
|
||||
assert(!count && !size || count && size);
|
||||
cursor.ptr += size;
|
||||
cursor << (unsigned char)0;
|
||||
}
|
||||
|
||||
|
||||
template<class _Traits, class _Ax>
|
||||
inline size_t pksizeof(_In_ const std::basic_string<wchar_t, _Traits, _Ax> &val)
|
||||
{
|
||||
return sizeof(char)*(WideCharToMultiByte(CP_UTF8, 0, val.c_str(), (int)val.length(), NULL, 0, NULL, NULL) + 1);
|
||||
return sizeof(char)*(WideCharToMultiByte(CP_UTF8, 0, val.c_str(), (int)val.length(), NULL, 0, NULL, NULL)) + sizeof(char);
|
||||
}
|
||||
|
||||
|
||||
template<class _Traits, class _Ax>
|
||||
inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &val)
|
||||
{
|
||||
std::string val_utf8;
|
||||
cursor >> val_utf8;
|
||||
MultiByteToWideChar(CP_UTF8, 0, val_utf8, val);
|
||||
size_t count_max = cursor.ptr_end - cursor.ptr;
|
||||
size_t count = strnlen((const char*)cursor.ptr, count_max);
|
||||
assert(count < count_max); // String should be zero terminated.
|
||||
MultiByteToWideChar(CP_UTF8, 0, (const char*)cursor.ptr, (int)count, val);
|
||||
cursor.ptr += sizeof(char)*(count + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -1260,7 +1270,7 @@ inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ winstd::cert_contex
|
||||
cursor >> (unsigned int&)dwCertEncodingType;
|
||||
|
||||
DWORD dwCertEncodedSize;
|
||||
assert(sizeof(dwCertEncodingType) == sizeof(unsigned int));
|
||||
assert(sizeof(dwCertEncodedSize) == sizeof(unsigned int));
|
||||
cursor >> (unsigned int&)dwCertEncodedSize;
|
||||
|
||||
if (dwCertEncodedSize) {
|
||||
@@ -1400,7 +1410,7 @@ inline unsigned __int64 htonll(unsigned __int64 val)
|
||||
#endif
|
||||
|
||||
|
||||
inline void hton24(_In_ unsigned int val, _Out_ unsigned char out[3])
|
||||
inline void hton24(_In_ unsigned int val, _Out_writes_(3) unsigned char out[3])
|
||||
{
|
||||
assert(val <= 0xffffff);
|
||||
out[0] = (val >> 16) & 0xff;
|
||||
|
@@ -357,7 +357,7 @@ namespace eapxml
|
||||
/// - <0 if failed.
|
||||
/// Use `SUCCEEDED()` macro to test for first two cases (>=0) or `FAILED()` to test for failure.
|
||||
///
|
||||
inline HRESULT put_element_base64(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement = NULL);
|
||||
inline HRESULT put_element_base64(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement = NULL);
|
||||
|
||||
///
|
||||
/// Creates a new child element with hexadecimal encoded text from BLOB
|
||||
@@ -376,7 +376,7 @@ namespace eapxml
|
||||
/// - <0 if failed.
|
||||
/// Use `SUCCEEDED()` macro to test for first two cases (>=0) or `FAILED()` to test for failure.
|
||||
///
|
||||
inline HRESULT put_element_hex(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement = NULL);
|
||||
inline HRESULT put_element_hex(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement = NULL);
|
||||
|
||||
///
|
||||
/// Returns attribute text
|
||||
@@ -481,7 +481,7 @@ namespace eapxml
|
||||
/// - <0 if failed.
|
||||
/// Use `SUCCEEDED()` macro to test for first two cases (>=0) or `FAILED()` to test for failure.
|
||||
///
|
||||
inline HRESULT put_attrib_value(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_opt_z_ _In_z_ const BSTR bstrValue);
|
||||
inline HRESULT put_attrib_value(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_z_ const BSTR bstrValue);
|
||||
|
||||
///
|
||||
/// Sets node attribute converted from number
|
||||
@@ -496,7 +496,7 @@ namespace eapxml
|
||||
/// - <0 if failed.
|
||||
/// Use `SUCCEEDED()` macro to test for first two cases (>=0) or `FAILED()` to test for failure.
|
||||
///
|
||||
inline HRESULT put_attrib_value(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_opt_z_ _In_ DWORD dwValue);
|
||||
inline HRESULT put_attrib_value(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_ DWORD dwValue);
|
||||
|
||||
///
|
||||
/// Sets node attribute converted from boolean
|
||||
@@ -511,7 +511,7 @@ namespace eapxml
|
||||
/// - <0 if failed.
|
||||
/// Use `SUCCEEDED()` macro to test for first two cases (>=0) or `FAILED()` to test for failure.
|
||||
///
|
||||
inline HRESULT put_attrib_value(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_opt_z_ _In_ bool bValue);
|
||||
inline HRESULT put_attrib_value(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_ bool bValue);
|
||||
|
||||
///
|
||||
/// Sets node attribute to Base64 encoded text from BLOB
|
||||
@@ -527,7 +527,7 @@ namespace eapxml
|
||||
/// - <0 if failed.
|
||||
/// Use `SUCCEEDED()` macro to test for first two cases (>=0) or `FAILED()` to test for failure.
|
||||
///
|
||||
inline HRESULT put_attrib_base64(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_opt_z_ _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen);
|
||||
inline HRESULT put_attrib_base64(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen);
|
||||
///
|
||||
/// Sets node attribute to hexadecimal encoded text from BLOB
|
||||
///
|
||||
@@ -542,7 +542,7 @@ namespace eapxml
|
||||
/// - <0 if failed.
|
||||
/// Use `SUCCEEDED()` macro to test for first two cases (>=0) or `FAILED()` to test for failure.
|
||||
///
|
||||
inline HRESULT put_attrib_hex(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen);
|
||||
inline HRESULT put_attrib_hex(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen);
|
||||
|
||||
///
|
||||
/// Builds XPath for a given node
|
||||
@@ -786,7 +786,7 @@ namespace eapxml
|
||||
pbstrValue = std::move(bstrEn);
|
||||
return S_OK;
|
||||
} else
|
||||
return ERROR_NOT_FOUND;
|
||||
return HRESULT_FROM_WIN32(ERROR_NOT_FOUND);
|
||||
}
|
||||
|
||||
winstd::com_obj<IXMLDOMNode> pXmlElLocalizedText;
|
||||
@@ -831,7 +831,6 @@ namespace eapxml
|
||||
{
|
||||
assert(pDoc);
|
||||
assert(pCurrentDOMNode);
|
||||
assert(ppXmlElement);
|
||||
|
||||
static const VARIANT varNodeTypeEl = { VT_I4, 0, 0, 0, { NODE_ELEMENT } };
|
||||
HRESULT hr;
|
||||
@@ -878,7 +877,7 @@ namespace eapxml
|
||||
}
|
||||
|
||||
|
||||
inline HRESULT put_element_base64(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement)
|
||||
inline HRESULT put_element_base64(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement)
|
||||
{
|
||||
std::wstring sBase64;
|
||||
winstd::base64_enc enc;
|
||||
@@ -887,7 +886,7 @@ namespace eapxml
|
||||
}
|
||||
|
||||
|
||||
inline HRESULT put_element_hex(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement)
|
||||
inline HRESULT put_element_hex(_In_ IXMLDOMDocument *pDoc, _In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrElementName, _In_opt_z_ const BSTR bstrNamespace, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen, _Out_opt_ winstd::com_obj<IXMLDOMElement> *ppXmlElement)
|
||||
{
|
||||
std::wstring sHex;
|
||||
winstd::hex_enc enc;
|
||||
@@ -936,8 +935,6 @@ namespace eapxml
|
||||
|
||||
inline HRESULT get_attrib_value(_In_ IXMLDOMNode *pXmlParent, _In_z_ const BSTR bstrAttributeName, _Out_ bool &pbValue)
|
||||
{
|
||||
assert(pbValue);
|
||||
|
||||
winstd::bstr bstr;
|
||||
HRESULT hr = get_attrib_value(pXmlParent, bstrAttributeName, bstr);
|
||||
if (SUCCEEDED(hr)) {
|
||||
@@ -1012,7 +1009,7 @@ namespace eapxml
|
||||
}
|
||||
|
||||
|
||||
inline HRESULT put_attrib_base64(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen)
|
||||
inline HRESULT put_attrib_base64(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen)
|
||||
{
|
||||
std::wstring sBase64;
|
||||
winstd::base64_enc enc;
|
||||
@@ -1021,7 +1018,7 @@ namespace eapxml
|
||||
}
|
||||
|
||||
|
||||
inline HRESULT put_attrib_hex(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_count_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen)
|
||||
inline HRESULT put_attrib_hex(_In_ IXMLDOMNode *pCurrentDOMNode, _In_z_ const BSTR bstrAttributeName, _In_bytecount_(nValueLen) LPCVOID pValue, _In_ SIZE_T nValueLen)
|
||||
{
|
||||
std::wstring sHex;
|
||||
winstd::hex_enc enc;
|
||||
|
@@ -69,7 +69,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Method to move from
|
||||
///
|
||||
method(_Inout_ method &&other);
|
||||
method(_Inout_ method &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Moves a method
|
||||
@@ -78,7 +78,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
method& operator=(_Inout_ method &&other);
|
||||
method& operator=(_Inout_ method &&other) noexcept;
|
||||
|
||||
/// \name Session management
|
||||
/// @{
|
||||
@@ -144,12 +144,12 @@ namespace eap
|
||||
///
|
||||
/// \sa [EapPeerGetResult function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363611.aspx)
|
||||
///
|
||||
/// \param[in ] reason The reason code for the authentication result returned in \p pResult.
|
||||
/// \param[out] pResult A pointer to a structure that contains the authentication results.
|
||||
/// \param[in ] reason The reason code for the authentication result returned in \p pResult.
|
||||
/// \param[inout] pResult A pointer to a structure that contains the authentication results.
|
||||
///
|
||||
virtual void get_result(
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Out_ EapPeerMethodResult *pResult);
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Inout_ EapPeerMethodResult *pResult);
|
||||
|
||||
/// \name User Interaction
|
||||
/// @{
|
||||
@@ -236,7 +236,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Method to move from
|
||||
///
|
||||
method_tunnel(_Inout_ method_tunnel &&other);
|
||||
method_tunnel(_Inout_ method_tunnel &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Moves a method
|
||||
@@ -245,7 +245,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
method_tunnel& operator=(_Inout_ method_tunnel &&other);
|
||||
method_tunnel& operator=(_Inout_ method_tunnel &&other) noexcept;
|
||||
|
||||
/// \name Session management
|
||||
/// @{
|
||||
@@ -274,8 +274,8 @@ namespace eap
|
||||
/// @}
|
||||
|
||||
virtual void get_result(
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Out_ EapPeerMethodResult *pResult);
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Inout_ EapPeerMethodResult *pResult);
|
||||
|
||||
/// \name User Interaction
|
||||
/// @{
|
||||
@@ -326,7 +326,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Method to move from
|
||||
///
|
||||
method_eap(_Inout_ method_eap &&other);
|
||||
method_eap(_Inout_ method_eap &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Moves a method
|
||||
@@ -335,7 +335,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
method_eap& operator=(_Inout_ method_eap &&other);
|
||||
method_eap& operator=(_Inout_ method_eap &&other) noexcept;
|
||||
|
||||
/// \name Session management
|
||||
/// @{
|
||||
|
@@ -93,17 +93,17 @@ namespace eap
|
||||
///
|
||||
/// Allocate BLOB
|
||||
///
|
||||
BYTE* alloc_memory(_In_ size_t size);
|
||||
BYTE* alloc_memory(_In_ size_t size) const;
|
||||
|
||||
///
|
||||
/// Free BLOB allocated with this peer
|
||||
///
|
||||
void free_memory(_In_ BYTE *ptr);
|
||||
void free_memory(_In_ BYTE *ptr) const;
|
||||
|
||||
///
|
||||
/// Free EAP_ERROR allocated with `make_error()` method
|
||||
///
|
||||
void free_error_memory(_In_ EAP_ERROR *err);
|
||||
void free_error_memory(_In_ EAP_ERROR *err) const;
|
||||
|
||||
///
|
||||
/// Makes a new method configuration
|
||||
@@ -147,6 +147,35 @@ namespace eap
|
||||
///
|
||||
void log_error(_In_ const EAP_ERROR *err) const;
|
||||
|
||||
///
|
||||
/// Logs error and optionally returns EAP_ERROR
|
||||
///
|
||||
inline DWORD log_error(_Out_opt_ EAP_ERROR **eap_err, _In_ DWORD dwErrorCode, _In_opt_z_ LPCWSTR pszRootCauseString = NULL, _In_opt_z_ LPCWSTR pszRepairString = NULL, _In_opt_ DWORD dwReasonCode = 0, _In_opt_ LPCGUID pRootCauseGuid = NULL, _In_opt_ LPCGUID pRepairGuid = NULL, _In_opt_ LPCGUID pHelpLinkGuid = NULL) const
|
||||
{
|
||||
EAP_ERROR *e = make_error(dwErrorCode, pszRootCauseString, pszRepairString, dwReasonCode, pRootCauseGuid, pRepairGuid, pHelpLinkGuid);
|
||||
log_error(e);
|
||||
if (eap_err)
|
||||
*eap_err = e;
|
||||
else
|
||||
free_error_memory(e);
|
||||
return dwErrorCode;
|
||||
}
|
||||
|
||||
///
|
||||
/// Logs error and optionally returns EAP_ERROR
|
||||
///
|
||||
inline DWORD log_error(_Out_opt_ EAP_ERROR **eap_err, _In_ std::exception &err) const
|
||||
{
|
||||
EAP_ERROR *e = make_error(err);
|
||||
log_error(e);
|
||||
DWORD dwWinError = e->dwWinError;
|
||||
if (eap_err)
|
||||
*eap_err = e;
|
||||
else
|
||||
free_error_memory(e);
|
||||
return dwWinError;
|
||||
}
|
||||
|
||||
///
|
||||
/// Logs Unicode string config value
|
||||
///
|
||||
@@ -288,7 +317,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Encrypted data
|
||||
///
|
||||
std::vector<unsigned char> encrypt(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _Out_opt_ HCRYPTHASH hHash = NULL) const;
|
||||
std::vector<unsigned char> encrypt(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _In_opt_ HCRYPTHASH hHash = NULL) const;
|
||||
|
||||
|
||||
///
|
||||
@@ -301,7 +330,7 @@ namespace eap
|
||||
/// \returns Encrypted data
|
||||
///
|
||||
template<class _Elem, class _Traits, class _Ax>
|
||||
std::vector<unsigned char> encrypt(_In_ HCRYPTPROV hProv, _In_ const std::basic_string<_Elem, _Traits, _Ax> &val, _Out_opt_ HCRYPTHASH hHash = NULL) const
|
||||
std::vector<unsigned char> encrypt(_In_ HCRYPTPROV hProv, _In_ const std::basic_string<_Elem, _Traits, _Ax> &val, _In_opt_ HCRYPTHASH hHash = NULL) const
|
||||
{
|
||||
return encrypt(hProv, val.c_str(), val.length()*sizeof(_Elem), hHash);
|
||||
}
|
||||
@@ -317,7 +346,7 @@ namespace eap
|
||||
/// \returns Encrypted data
|
||||
///
|
||||
template<class _Traits, class _Ax>
|
||||
std::vector<unsigned char> encrypt(_In_ HCRYPTPROV hProv, _In_ const std::basic_string<wchar_t, _Traits, _Ax> &val, _Out_opt_ HCRYPTHASH hHash = NULL) const
|
||||
std::vector<unsigned char> encrypt(_In_ HCRYPTPROV hProv, _In_ const std::basic_string<wchar_t, _Traits, _Ax> &val, _In_opt_ HCRYPTHASH hHash = NULL) const
|
||||
{
|
||||
winstd::sanitizing_string val_utf8;
|
||||
WideCharToMultiByte(CP_UTF8, 0, val, val_utf8, NULL, NULL);
|
||||
@@ -380,13 +409,15 @@ namespace eap
|
||||
/// \returns Decrypted data
|
||||
///
|
||||
template<class _Ty, class _Ax>
|
||||
std::vector<_Ty, _Ax> decrypt(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _Out_opt_ HCRYPTHASH hHash = NULL) const
|
||||
std::vector<_Ty, _Ax> decrypt(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _In_opt_ HCRYPTHASH hHash = NULL) const
|
||||
{
|
||||
// Import the private RSA key.
|
||||
HRSRC res = FindResource(m_instance, MAKEINTRESOURCE(IDR_EAP_KEY_PRIVATE), RT_RCDATA);
|
||||
assert(res);
|
||||
if (!res)
|
||||
throw winstd::win_runtime_error(__FUNCTION__ " FindResource failed.");
|
||||
HGLOBAL res_handle = LoadResource(m_instance, res);
|
||||
assert(res_handle);
|
||||
if (!res_handle)
|
||||
throw winstd::win_runtime_error(__FUNCTION__ " LoadResource failed.");
|
||||
winstd::crypt_key key_rsa;
|
||||
std::unique_ptr<unsigned char[], winstd::LocalFree_delete<unsigned char[]> > keyinfo_data;
|
||||
DWORD keyinfo_size = 0;
|
||||
@@ -423,7 +454,7 @@ namespace eap
|
||||
/// \returns Decrypted string
|
||||
///
|
||||
template<class _Elem, class _Traits, class _Ax>
|
||||
std::basic_string<_Elem, _Traits, _Ax> decrypt_str(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _Out_opt_ HCRYPTHASH hHash = NULL) const
|
||||
std::basic_string<_Elem, _Traits, _Ax> decrypt_str(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _In_opt_ HCRYPTHASH hHash = NULL) const
|
||||
{
|
||||
std::vector<_Elem, sanitizing_allocator<_Elem> > buf(std::move(decrypt(hProv, data, size, hHash)));
|
||||
return std::basic_string<_Elem, _Traits, _Ax>(buf.data(), buf.size());
|
||||
@@ -441,7 +472,7 @@ namespace eap
|
||||
/// \returns Decrypted string
|
||||
///
|
||||
template<class _Traits, class _Ax>
|
||||
std::basic_string<wchar_t, _Traits, _Ax> decrypt_str(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _Out_opt_ HCRYPTHASH hHash = NULL) const
|
||||
std::basic_string<wchar_t, _Traits, _Ax> decrypt_str(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _In_opt_ HCRYPTHASH hHash = NULL) const
|
||||
{
|
||||
winstd::sanitizing_string buf(std::move(decrypt_str(hProv, data, size, hHash)));
|
||||
std::basic_string<wchar_t, _Traits, _Ax> dec;
|
||||
@@ -865,13 +896,13 @@ namespace eap
|
||||
/// \param[out] ppDataFromInteractiveUI A pointer that receives a credentials BLOB that can be used in authentication. The caller should free the inner pointers using the function \p EapPeerFreeMemory(), starting at the innermost pointer. If a non-NULL value is supplied for this parameter, meaning that an existing data BLOB is passed to it, the supplied data BLOB will be updated and returned in this parameter.
|
||||
///
|
||||
virtual void query_ui_blob_from_interactive_ui_input_fields(
|
||||
_In_ DWORD dwVersion,
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ DWORD dwUIContextDataSize,
|
||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
||||
_In_ const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
||||
_Out_ DWORD *pdwDataFromInteractiveUISize,
|
||||
_Out_ BYTE **ppDataFromInteractiveUI) const;
|
||||
_In_ DWORD dwVersion,
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ DWORD dwUIContextDataSize,
|
||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
||||
_In_ const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
||||
_Out_ DWORD *pdwDataFromInteractiveUISize,
|
||||
_Outptr_result_buffer_(*pdwDataFromInteractiveUISize) BYTE **ppDataFromInteractiveUI) const;
|
||||
|
||||
/// \name Session management
|
||||
/// @{
|
||||
@@ -942,9 +973,9 @@ namespace eap
|
||||
/// \param[inout] pdwSendPacketSize A pointer to a value that contains the size in bytes of the buffer allocated for the response packet. On return, this parameter receives a pointer to the actual size in bytes of \p pSendPacket.
|
||||
///
|
||||
virtual void get_response_packet(
|
||||
_In_ EAP_SESSION_HANDLE hSession,
|
||||
_Inout_bytecap_(*dwSendPacketSize) EapPacket *pSendPacket,
|
||||
_Inout_ DWORD *pdwSendPacketSize) = 0;
|
||||
_In_ EAP_SESSION_HANDLE hSession,
|
||||
_Out_bytecapcount_(*pdwSendPacketSize) EapPacket *pSendPacket,
|
||||
_Inout_ DWORD *pdwSendPacketSize) = 0;
|
||||
|
||||
/// @}
|
||||
|
||||
@@ -953,14 +984,14 @@ namespace eap
|
||||
///
|
||||
/// \sa [EapPeerGetResult function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363611.aspx)
|
||||
///
|
||||
/// \param[in ] hSession A unique handle for this EAP authentication session on the EAPHost server. This handle is returned in the \p pSessionHandle parameter in a previous call to `EapPeerBeginSession()`.
|
||||
/// \param[in ] reason The reason code for the authentication result returned in \p pResult.
|
||||
/// \param[out] pResult A pointer to a structure that contains the authentication results.
|
||||
/// \param[in ] hSession A unique handle for this EAP authentication session on the EAPHost server. This handle is returned in the \p pSessionHandle parameter in a previous call to `EapPeerBeginSession()`.
|
||||
/// \param[in ] reason The reason code for the authentication result returned in \p pResult.
|
||||
/// \param[inout] pResult A pointer to a structure that contains the authentication results.
|
||||
///
|
||||
virtual void get_result(
|
||||
_In_ EAP_SESSION_HANDLE hSession,
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Out_ EapPeerMethodResult *pResult) = 0;
|
||||
_In_ EAP_SESSION_HANDLE hSession,
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Inout_ EapPeerMethodResult *pResult) = 0;
|
||||
|
||||
/// \name User Interaction
|
||||
/// @{
|
||||
|
102
lib/EAPBase/include/UIContext.h
Normal file
102
lib/EAPBase/include/UIContext.h
Normal file
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
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 packable
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs context
|
||||
///
|
||||
/// \param[in] cfg Connection configuration
|
||||
/// \param[in] cred Connection credentials
|
||||
///
|
||||
ui_context(_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) noexcept;
|
||||
|
||||
///
|
||||
/// 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) noexcept;
|
||||
|
||||
/// \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
|
||||
};
|
||||
|
||||
/// @}
|
||||
}
|
@@ -40,7 +40,7 @@ eap::config::config(_In_ const config &other) :
|
||||
}
|
||||
|
||||
|
||||
eap::config::config(_Inout_ config &&other) :
|
||||
eap::config::config(_Inout_ config &&other) noexcept :
|
||||
m_module(other.m_module)
|
||||
{
|
||||
}
|
||||
@@ -55,7 +55,7 @@ eap::config& eap::config::operator=(_In_ const config &other)
|
||||
}
|
||||
|
||||
|
||||
eap::config& eap::config::operator=(_Inout_ config &&other)
|
||||
eap::config& eap::config::operator=(_Inout_ config &&other) noexcept
|
||||
{
|
||||
if (this != &other)
|
||||
assert(&m_module == &other.m_module);
|
||||
@@ -103,7 +103,7 @@ eap::config_method::config_method(_In_ const config_method &other) :
|
||||
}
|
||||
|
||||
|
||||
eap::config_method::config_method(_Inout_ config_method &&other) :
|
||||
eap::config_method::config_method(_Inout_ config_method &&other) noexcept :
|
||||
m_level (std::move(other.m_level )),
|
||||
m_allow_save (std::move(other.m_allow_save )),
|
||||
m_last_status(std::move(other.m_last_status)),
|
||||
@@ -127,7 +127,7 @@ eap::config_method& eap::config_method::operator=(_In_ const config_method &othe
|
||||
}
|
||||
|
||||
|
||||
eap::config_method& eap::config_method::operator=(_Inout_ config_method &&other)
|
||||
eap::config_method& eap::config_method::operator=(_Inout_ config_method &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
assert(m_level == other.m_level); // Allow move within same configuration level only.
|
||||
@@ -231,7 +231,7 @@ eap::config_method_with_cred::config_method_with_cred(_In_ const config_method_w
|
||||
}
|
||||
|
||||
|
||||
eap::config_method_with_cred::config_method_with_cred(_Inout_ config_method_with_cred &&other) :
|
||||
eap::config_method_with_cred::config_method_with_cred(_Inout_ config_method_with_cred &&other) noexcept :
|
||||
m_use_cred (std::move(other.m_use_cred)),
|
||||
m_cred (std::move(other.m_cred )),
|
||||
config_method(std::move(other ))
|
||||
@@ -251,7 +251,7 @@ eap::config_method_with_cred& eap::config_method_with_cred::operator=(_In_ const
|
||||
}
|
||||
|
||||
|
||||
eap::config_method_with_cred& eap::config_method_with_cred::operator=(_Inout_ config_method_with_cred &&other)
|
||||
eap::config_method_with_cred& eap::config_method_with_cred::operator=(_Inout_ config_method_with_cred &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(config_method&)*this = std::move(other );
|
||||
@@ -362,7 +362,7 @@ eap::config_provider::config_provider(_In_ const config_provider &other) :
|
||||
}
|
||||
|
||||
|
||||
eap::config_provider::config_provider(_Inout_ config_provider &&other) :
|
||||
eap::config_provider::config_provider(_Inout_ config_provider &&other) noexcept :
|
||||
m_namespace (std::move(other.m_namespace )),
|
||||
m_id (std::move(other.m_id )),
|
||||
m_read_only (std::move(other.m_read_only )),
|
||||
@@ -404,7 +404,7 @@ eap::config_provider& eap::config_provider::operator=(_In_ const config_provider
|
||||
}
|
||||
|
||||
|
||||
eap::config_provider& eap::config_provider::operator=(_Inout_ config_provider &&other)
|
||||
eap::config_provider& eap::config_provider::operator=(_Inout_ config_provider &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(config&&)*this = std::move(other );
|
||||
@@ -700,7 +700,7 @@ eap::config_connection::config_connection(_In_ const config_connection &other) :
|
||||
}
|
||||
|
||||
|
||||
eap::config_connection::config_connection(_Inout_ config_connection &&other) :
|
||||
eap::config_connection::config_connection(_Inout_ config_connection &&other) noexcept :
|
||||
m_providers(std::move(other.m_providers)),
|
||||
config (std::move(other ))
|
||||
{
|
||||
@@ -718,7 +718,7 @@ eap::config_connection& eap::config_connection::operator=(_In_ const config_conn
|
||||
}
|
||||
|
||||
|
||||
eap::config_connection& eap::config_connection::operator=(_Inout_ config_connection &&other)
|
||||
eap::config_connection& eap::config_connection::operator=(_Inout_ config_connection &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(config&&)*this = std::move(other );
|
||||
|
@@ -53,7 +53,7 @@ eap::credentials::credentials(_In_ const credentials &other) :
|
||||
}
|
||||
|
||||
|
||||
eap::credentials::credentials(_Inout_ credentials &&other) :
|
||||
eap::credentials::credentials(_Inout_ credentials &&other) noexcept :
|
||||
m_identity(std::move(other.m_identity)),
|
||||
config(std::move(other))
|
||||
{
|
||||
@@ -71,7 +71,7 @@ eap::credentials& eap::credentials::operator=(_In_ const credentials &other)
|
||||
}
|
||||
|
||||
|
||||
eap::credentials& eap::credentials::operator=(_Inout_ credentials &&other)
|
||||
eap::credentials& eap::credentials::operator=(_Inout_ credentials &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(config&)*this = std::move(other);
|
||||
@@ -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) noexcept : 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) noexcept
|
||||
{
|
||||
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_opt_ 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
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@@ -182,7 +359,7 @@ eap::credentials_pass::credentials_pass(_In_ const credentials_pass &other) :
|
||||
}
|
||||
|
||||
|
||||
eap::credentials_pass::credentials_pass(_Inout_ credentials_pass &&other) :
|
||||
eap::credentials_pass::credentials_pass(_Inout_ credentials_pass &&other) noexcept :
|
||||
m_password (std::move(other.m_password)),
|
||||
m_enc_alg (std::move(other.m_enc_alg )),
|
||||
credentials(std::move(other ))
|
||||
@@ -202,7 +379,7 @@ eap::credentials_pass& eap::credentials_pass::operator=(_In_ const credentials_p
|
||||
}
|
||||
|
||||
|
||||
eap::credentials_pass& eap::credentials_pass::operator=(_Inout_ credentials_pass &&other)
|
||||
eap::credentials_pass& eap::credentials_pass::operator=(_Inout_ credentials_pass &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(credentials&)*this = std::move(other );
|
||||
@@ -426,7 +603,7 @@ LPCTSTR eap::credentials_pass::target_suffix() const
|
||||
|
||||
eap::credentials::source_t eap::credentials_pass::combine(
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ const credentials *cred_cached,
|
||||
_In_ const config_method &cfg,
|
||||
_In_opt_z_ LPCTSTR pszTargetName)
|
||||
@@ -560,7 +737,7 @@ eap::credentials_connection::credentials_connection(_In_ const credentials_conne
|
||||
}
|
||||
|
||||
|
||||
eap::credentials_connection::credentials_connection(_Inout_ credentials_connection &&other) :
|
||||
eap::credentials_connection::credentials_connection(_Inout_ credentials_connection &&other) noexcept :
|
||||
m_cfg ( other.m_cfg ),
|
||||
m_namespace(std::move(other.m_namespace)),
|
||||
m_id (std::move(other.m_id )),
|
||||
@@ -583,7 +760,7 @@ eap::credentials_connection& eap::credentials_connection::operator=(_In_ const c
|
||||
}
|
||||
|
||||
|
||||
eap::credentials_connection& eap::credentials_connection::operator=(_Inout_ credentials_connection &&other)
|
||||
eap::credentials_connection& eap::credentials_connection::operator=(_Inout_ credentials_connection &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(config&)*this = std::move(other );
|
||||
@@ -771,7 +948,7 @@ template<class _Elem, class _Traits, class _Ax>
|
||||
inline static basic_string<_Elem, _Traits, _Ax> kph_encrypt(_In_ HCRYPTPROV hProv, _In_z_ const char *src)
|
||||
{
|
||||
basic_string<_Elem, _Traits, _Ax> str;
|
||||
unsigned short key[8];
|
||||
unsigned short key[8] = { 0 };
|
||||
|
||||
// Generate the key.
|
||||
if (!CryptGenRandom(hProv, sizeof(key), (BYTE*)key))
|
||||
|
@@ -34,13 +34,13 @@ eap::method::method(_In_ module &mod) :
|
||||
}
|
||||
|
||||
|
||||
eap::method::method(_Inout_ method &&other) :
|
||||
eap::method::method(_Inout_ method &&other) noexcept :
|
||||
m_module(other.m_module)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
eap::method& eap::method::operator=(_Inout_ method &&other)
|
||||
eap::method& eap::method::operator=(_Inout_ method &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other)) {
|
||||
assert(std::addressof(m_module) == std::addressof(other.m_module)); // Move method within same module only!
|
||||
@@ -96,7 +96,7 @@ EapPeerMethodResponseAction eap::method::set_ui_context(
|
||||
}
|
||||
|
||||
|
||||
void eap::method::get_response_attributes(_Inout_ EapAttributes *pAttribs)
|
||||
void eap::method::get_response_attributes(_Out_ EapAttributes *pAttribs)
|
||||
{
|
||||
assert(pAttribs);
|
||||
|
||||
@@ -126,14 +126,14 @@ eap::method_tunnel::method_tunnel(_In_ module &mod, _In_ method *inner) :
|
||||
}
|
||||
|
||||
|
||||
eap::method_tunnel::method_tunnel(_Inout_ method_tunnel &&other) :
|
||||
eap::method_tunnel::method_tunnel(_Inout_ method_tunnel &&other) noexcept :
|
||||
m_inner(std::move(other.m_inner)),
|
||||
method (std::move(other ))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
eap::method_tunnel& eap::method_tunnel::operator=(_Inout_ method_tunnel &&other)
|
||||
eap::method_tunnel& eap::method_tunnel::operator=(_Inout_ method_tunnel &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other)) {
|
||||
(method&)*this = std::move(other );
|
||||
@@ -213,7 +213,7 @@ EapPeerMethodResponseAction eap::method_tunnel::set_ui_context(
|
||||
}
|
||||
|
||||
|
||||
void eap::method_tunnel::get_response_attributes(_Inout_ EapAttributes *pAttribs)
|
||||
void eap::method_tunnel::get_response_attributes(_Out_ EapAttributes *pAttribs)
|
||||
{
|
||||
assert(m_inner);
|
||||
m_inner->get_response_attributes(pAttribs);
|
||||
@@ -240,7 +240,7 @@ eap::method_eap::method_eap(_In_ module &mod, _In_ winstd::eap_type_t eap_method
|
||||
}
|
||||
|
||||
|
||||
eap::method_eap::method_eap(_Inout_ method_eap &&other) :
|
||||
eap::method_eap::method_eap(_Inout_ method_eap &&other) noexcept :
|
||||
m_eap_method (std::move(other.m_eap_method)),
|
||||
m_id (std::move(other.m_id )),
|
||||
m_send_nak (std::move(other.m_send_nak )),
|
||||
@@ -249,7 +249,7 @@ eap::method_eap::method_eap(_Inout_ method_eap &&other) :
|
||||
}
|
||||
|
||||
|
||||
eap::method_eap& eap::method_eap::operator=(_Inout_ method_eap &&other)
|
||||
eap::method_eap& eap::method_eap::operator=(_Inout_ method_eap &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other)) {
|
||||
assert(m_eap_method == other.m_eap_method); // Move method within same EAP method type only!
|
||||
@@ -274,7 +274,7 @@ void eap::method_eap::begin_session(
|
||||
// Inner method can generate packets of up to 64kB (less the EAP packet header).
|
||||
// Initialize inner method with appropriately less packet size maximum.
|
||||
if (dwMaxSendPacketSize < sizeof(EapPacket))
|
||||
throw invalid_argument(string_printf(__FUNCTION__ " Maximum packet size too small (minimum: %u, available: %u).", sizeof(EapPacket) + 1, dwMaxSendPacketSize));
|
||||
throw invalid_argument(string_printf(__FUNCTION__ " Maximum packet size too small (minimum: %zu, available: %u).", sizeof(EapPacket) + 1, dwMaxSendPacketSize));
|
||||
assert(m_inner);
|
||||
m_inner->begin_session(dwFlags, pAttributeArray, hTokenImpersonateUser, std::min<DWORD>(dwMaxSendPacketSize, MAXWORD) - sizeof(EapPacket));
|
||||
}
|
||||
@@ -337,7 +337,7 @@ void eap::method_eap::get_response_packet(
|
||||
// Check packet size. We will suggest one EAP method alone, so we need one byte for data.
|
||||
size_t size_packet = sizeof(EapPacket) + 1;
|
||||
if (size_packet > 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).", size_packet, 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: %zu, maximum: %u).", size_packet, size_max));
|
||||
packet.reserve(size_packet); // To avoid reallocation when inserting EAP packet header later.
|
||||
|
||||
// Data of Legacy Nak packet is a list of supported EAP types: our method alone.
|
||||
|
@@ -28,7 +28,7 @@ using namespace winstd;
|
||||
// eap::module
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
eap::module::module(eap_type_t eap_method) :
|
||||
eap::module::module(_In_ eap_type_t eap_method) :
|
||||
m_eap_method(eap_method),
|
||||
m_instance(NULL)
|
||||
{
|
||||
@@ -141,16 +141,16 @@ EAP_ERROR* eap::module::make_error(_In_ const EAP_ERROR *err) const
|
||||
}
|
||||
|
||||
|
||||
BYTE* eap::module::alloc_memory(_In_ size_t size)
|
||||
BYTE* eap::module::alloc_memory(_In_ size_t size) const
|
||||
{
|
||||
BYTE *p = (BYTE*)HeapAlloc(m_heap, 0, size);
|
||||
if (!p)
|
||||
throw win_runtime_error(winstd::string_printf(__FUNCTION__ " Error allocating memory for BLOB (%uB).", size));
|
||||
throw win_runtime_error(winstd::string_printf(__FUNCTION__ " Error allocating memory for BLOB (%zuB).", size));
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
void eap::module::free_memory(_In_ BYTE *ptr)
|
||||
void eap::module::free_memory(_In_ BYTE *ptr) const
|
||||
{
|
||||
#if !EAP_ENCRYPT_BLOBS
|
||||
// Since we do security here and some of the BLOBs contain credentials, sanitize every memory block before freeing.
|
||||
@@ -160,7 +160,7 @@ void eap::module::free_memory(_In_ BYTE *ptr)
|
||||
}
|
||||
|
||||
|
||||
void eap::module::free_error_memory(_In_ EAP_ERROR *err)
|
||||
void eap::module::free_error_memory(_In_ EAP_ERROR *err) const
|
||||
{
|
||||
// pRootCauseString and pRepairString always trail the ppEapError to reduce number of (de)allocations.
|
||||
HeapFree(m_heap, 0, err);
|
||||
@@ -193,7 +193,7 @@ eap::config_method* eap::module::make_config_method()
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> eap::module::encrypt(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _Out_opt_ HCRYPTHASH hHash) const
|
||||
std::vector<unsigned char> eap::module::encrypt(_In_ HCRYPTPROV hProv, _In_bytecount_(size) const void *data, _In_ size_t size, _In_opt_ HCRYPTHASH hHash) const
|
||||
{
|
||||
// Generate 256-bit AES session key.
|
||||
crypt_key key_aes;
|
||||
@@ -202,9 +202,11 @@ std::vector<unsigned char> eap::module::encrypt(_In_ HCRYPTPROV hProv, _In_bytec
|
||||
|
||||
// Import the public RSA key.
|
||||
HRSRC res = FindResource(m_instance, MAKEINTRESOURCE(IDR_EAP_KEY_PUBLIC), RT_RCDATA);
|
||||
assert(res);
|
||||
if (!res)
|
||||
throw winstd::win_runtime_error(__FUNCTION__ " FindResource failed.");
|
||||
HGLOBAL res_handle = LoadResource(m_instance, res);
|
||||
assert(res_handle);
|
||||
if (!res_handle)
|
||||
throw winstd::win_runtime_error(__FUNCTION__ " LoadResource failed.");
|
||||
crypt_key key_rsa;
|
||||
unique_ptr<CERT_PUBLIC_KEY_INFO, LocalFree_delete<CERT_PUBLIC_KEY_INFO> > keyinfo_data;
|
||||
DWORD keyinfo_size = 0;
|
||||
@@ -321,13 +323,13 @@ void eap::peer::query_interactive_ui_input_fields(
|
||||
|
||||
|
||||
void eap::peer::query_ui_blob_from_interactive_ui_input_fields(
|
||||
_In_ DWORD dwVersion,
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ DWORD dwUIContextDataSize,
|
||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
||||
_In_ const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
||||
_Out_ DWORD *pdwDataFromInteractiveUISize,
|
||||
_Out_ BYTE **ppDataFromInteractiveUI) const
|
||||
_In_ DWORD dwVersion,
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ DWORD dwUIContextDataSize,
|
||||
_In_count_(dwUIContextDataSize) const BYTE *pUIContextData,
|
||||
_In_ const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
|
||||
_Out_ DWORD *pdwDataFromInteractiveUISize,
|
||||
_Outptr_result_buffer_(*pdwDataFromInteractiveUISize) BYTE **ppDataFromInteractiveUI) const
|
||||
{
|
||||
UNREFERENCED_PARAMETER(dwVersion);
|
||||
UNREFERENCED_PARAMETER(dwFlags);
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include "../include/Credentials.h"
|
||||
#include "../include/Method.h"
|
||||
#include "../include/Module.h"
|
||||
#include "../include/UIContext.h"
|
||||
|
||||
#include "../include/EAP.h"
|
||||
#include "../include/EAPXML.h"
|
||||
|
100
lib/EAPBase/src/UIContext.cpp
Normal file
100
lib/EAPBase/src/UIContext.cpp
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
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_ config_connection &cfg, _In_ credentials_connection &cred) :
|
||||
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),
|
||||
packable(other )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
eap::ui_context::ui_context(_Inout_ ui_context &&other) noexcept :
|
||||
m_cfg ( other.m_cfg ),
|
||||
m_cred ( other.m_cred ),
|
||||
packable(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!
|
||||
(packable&)*this = other;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
eap::ui_context& eap::ui_context::operator=(_Inout_ ui_context &&other) noexcept
|
||||
{
|
||||
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!
|
||||
(packable&)*this = std::move(other);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
void eap::ui_context::operator<<(_Inout_ cursor_out &cursor) const
|
||||
{
|
||||
packable::operator<<(cursor);
|
||||
cursor << m_cfg ;
|
||||
cursor << m_cred;
|
||||
}
|
||||
|
||||
|
||||
size_t eap::ui_context::get_pk_size() const
|
||||
{
|
||||
return
|
||||
packable::get_pk_size() +
|
||||
pksizeof(m_cfg ) +
|
||||
pksizeof(m_cred);
|
||||
}
|
||||
|
||||
|
||||
void eap::ui_context::operator>>(_Inout_ cursor_in &cursor)
|
||||
{
|
||||
packable::operator>>(cursor);
|
||||
cursor >> m_cfg ;
|
||||
cursor >> m_cred;
|
||||
}
|
@@ -29,26 +29,26 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{D4B54856-BE1F-4937-A8F7-495125BE76BE}</ProjectGuid>
|
||||
<RootNamespace>EAPBase_UI</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</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>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -56,21 +56,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
|
@@ -43,6 +43,7 @@ class wxEAPProviderIDPanel;
|
||||
class wxEAPConfigProvider;
|
||||
template <class _Tcred, class _wxT> class wxEAPCredentialsConfigPanel;
|
||||
template <class _Tcred, class _Tbase> class wxEAPCredentialsPanel;
|
||||
template <class _Tcred, class _Tbase> class wxIdentityCredentialsPanel;
|
||||
template <class _Tcred, class _Tbase> class wxPasswordCredentialsPanel;
|
||||
class wxEAPProviderSelectDialog;
|
||||
|
||||
@@ -105,15 +106,12 @@ inline void wxInitializeConfig();
|
||||
|
||||
/// @}
|
||||
|
||||
namespace eap
|
||||
{
|
||||
class monitor_ui;
|
||||
}
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wx/msw/winundef.h> // Fixes `CreateDialog` name collision
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 26444)
|
||||
#include "../res/wxEAP_UI.h"
|
||||
#pragma warning(pop)
|
||||
|
||||
#include "../../EAPBase/include/Config.h"
|
||||
#include "../../EAPBase/include/Credentials.h"
|
||||
@@ -130,6 +128,10 @@ namespace eap
|
||||
#include <list>
|
||||
#include <memory>
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 26444)
|
||||
|
||||
|
||||
/// \addtogroup EAPBaseGUI
|
||||
/// @{
|
||||
|
||||
@@ -199,7 +201,7 @@ public:
|
||||
m_providers),
|
||||
is_single ?
|
||||
wxEAPGetProviderName(provider->m_name) :
|
||||
winstd::tstring_printf(_T("%s (%u)"), static_cast<LPCTSTR>(wxEAPGetProviderName(provider->m_name)), count));
|
||||
winstd::tstring_printf(_T("%s (%zu)"), static_cast<LPCTSTR>(wxEAPGetProviderName(provider->m_name)), count));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,7 +254,11 @@ protected:
|
||||
// Create provider.
|
||||
eap::config_provider cfg_provider(m_cfg.m_module);
|
||||
GUID guid;
|
||||
CoCreateGuid(&guid);
|
||||
HRESULT hr = CoCreateGuid(&guid);
|
||||
if (FAILED(hr)) {
|
||||
wxLogError(winstd::tstring_printf(wxT("error 0x%08x generating GUID"), hr).c_str());
|
||||
return;
|
||||
}
|
||||
cfg_provider.m_namespace = L"urn:uuid";
|
||||
cfg_provider.m_id = winstd::wstring_guid(guid).substr(1, 36);
|
||||
cfg_provider.m_methods.push_back(std::move(cfg_method));
|
||||
@@ -262,7 +268,7 @@ protected:
|
||||
eap::config_provider &cfg_provider2 = m_cfg.m_providers.back();
|
||||
eap::config_method *cfg_method2 = cfg_provider2.m_methods.front().get();
|
||||
_wxT *page = new _wxT(cfg_provider2, *cfg_method2, m_providers);
|
||||
m_providers->InsertPage(m_providers->GetSelection() + 1, page, wxEAPGetProviderName(cfg_provider2.m_name), true);
|
||||
m_providers->InsertPage((size_t)m_providers->GetSelection() + 1, page, wxEAPGetProviderName(cfg_provider2.m_name), true);
|
||||
|
||||
this->Layout();
|
||||
this->GetSizer()->Fit(this);
|
||||
@@ -953,14 +959,14 @@ protected:
|
||||
|
||||
|
||||
///
|
||||
/// Generic password credential entry panel
|
||||
/// Generic identity credential entry panel
|
||||
///
|
||||
template <class _Tcred, class _Tbase>
|
||||
class wxPasswordCredentialsPanel : public wxEAPCredentialsPanel<_Tcred, _Tbase>
|
||||
class wxIdentityCredentialsPanel : public wxEAPCredentialsPanel<_Tcred, _Tbase>
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs a password credentials panel
|
||||
/// Constructs a identity credentials panel
|
||||
///
|
||||
/// \param[in] prov Provider configuration data
|
||||
/// \param[in] cfg Method configuration data
|
||||
@@ -968,14 +974,13 @@ public:
|
||||
/// \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(const eap::config_provider &prov, const eap::config_method_with_cred &cfg, _Tcred &cred, wxWindow* parent, bool is_config = false) :
|
||||
wxEAPCredentialsPanel<_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 (lib_shell32.load(_T("shell32.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE))
|
||||
m_credentials_icon->SetIcon(wxLoadIconFromResource(lib_shell32, MAKEINTRESOURCE(/*16770*/269)));
|
||||
|
||||
bool layout = false;
|
||||
if (!m_prov.m_lbl_alt_credential.empty()) {
|
||||
@@ -989,11 +994,6 @@ public:
|
||||
layout = true;
|
||||
}
|
||||
|
||||
if (!m_prov.m_lbl_alt_password.empty()) {
|
||||
m_password_label->SetLabel(m_prov.m_lbl_alt_password);
|
||||
layout = true;
|
||||
}
|
||||
|
||||
if (layout)
|
||||
this->Layout();
|
||||
}
|
||||
@@ -1005,26 +1005,85 @@ protected:
|
||||
{
|
||||
m_identity->SetValue(m_cred.m_identity);
|
||||
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) {
|
||||
// Credential prompt mode & Using configured credentials
|
||||
m_identity_label->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()
|
||||
{
|
||||
if (!wxEAPCredentialsPanel<_Tcred, wxPasswordCredentialsPanelBase>::TransferDataFromWindow())
|
||||
if (!wxEAPCredentialsPanel<_Tcred, _Tbase>::TransferDataFromWindow())
|
||||
return false;
|
||||
|
||||
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)
|
||||
m_cred.m_password = m_password->GetValue();
|
||||
|
||||
@@ -1033,7 +1092,7 @@ protected:
|
||||
|
||||
virtual void OnPasswordText(wxCommandEvent& event)
|
||||
{
|
||||
wxEAPCredentialsPanel<_Tcred, _Tbase>::OnPasswordText(event);
|
||||
wxIdentityCredentialsPanel<_Tcred, _Tbase>::OnPasswordText(event);
|
||||
|
||||
m_password_set = true;
|
||||
}
|
||||
@@ -1084,94 +1143,4 @@ inline void wxInitializeConfig()
|
||||
if (cfgPrev) wxDELETE(cfgPrev);
|
||||
}
|
||||
|
||||
|
||||
namespace eap
|
||||
{
|
||||
/// \addtogroup EAPBaseGUI
|
||||
/// @{
|
||||
|
||||
///
|
||||
/// Base class to enable single instance of the same dialog (master) return result to multiple threads (slaves)
|
||||
///
|
||||
class monitor_ui
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs a UI monitor
|
||||
///
|
||||
monitor_ui(_In_ HINSTANCE module, _In_ const GUID &guid);
|
||||
|
||||
///
|
||||
/// Destructs the UI monitor
|
||||
///
|
||||
virtual ~monitor_ui();
|
||||
|
||||
///
|
||||
/// Sets pop-up window handle
|
||||
///
|
||||
/// \param[in] hwnd Handle of window to set as a new pop-up
|
||||
///
|
||||
void set_popup(_In_ HWND hwnd);
|
||||
|
||||
///
|
||||
/// Notifies all slaves waiting for this master and send them result data
|
||||
///
|
||||
/// \param[in] data Pointer to result data
|
||||
/// \param[in] size \p data size in bytes
|
||||
///
|
||||
void release_slaves(_In_bytecount_(size) const void *data, _In_ size_t size) const;
|
||||
|
||||
///
|
||||
/// Returns true if this is a master
|
||||
///
|
||||
inline bool is_master() const
|
||||
{
|
||||
return m_is_master;
|
||||
}
|
||||
|
||||
///
|
||||
/// Returns true if this is a slave
|
||||
///
|
||||
inline bool is_slave() const
|
||||
{
|
||||
return !is_master();
|
||||
}
|
||||
|
||||
///
|
||||
/// Returns the data master send
|
||||
///
|
||||
inline const std::vector<unsigned char>& master_data() const
|
||||
{
|
||||
return m_data;
|
||||
}
|
||||
|
||||
protected:
|
||||
/// \cond internal
|
||||
|
||||
virtual LRESULT winproc(
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam);
|
||||
|
||||
static LRESULT CALLBACK winproc(
|
||||
_In_ HWND hwnd,
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam);
|
||||
|
||||
/// \endcond
|
||||
|
||||
protected:
|
||||
bool m_is_master; ///< Is this monitor master?
|
||||
HWND m_hwnd; ///< Message window handle
|
||||
std::list<HWND> m_slaves; ///< List of slaves to notify on finish
|
||||
HWND m_hwnd_popup; ///< Pop-up window handle
|
||||
std::vector<unsigned char> m_data; ///< Data master sent
|
||||
|
||||
// Custom window messages
|
||||
static const UINT s_msg_attach; ///< Slave sends this message to attach to master
|
||||
static const UINT s_msg_finish; ///< Master sends this message to slaves to notify them it has finished (wparam has size, lparam has data)
|
||||
};
|
||||
|
||||
/// @}
|
||||
}
|
||||
#pragma warning(pop)
|
||||
|
@@ -21,6 +21,7 @@
|
||||
namespace eap
|
||||
{
|
||||
class peer_ui;
|
||||
class monitor_ui;
|
||||
}
|
||||
|
||||
#pragma once
|
||||
@@ -148,4 +149,92 @@ namespace eap
|
||||
};
|
||||
|
||||
/// @}
|
||||
|
||||
/// \addtogroup EAPBaseGUI
|
||||
/// @{
|
||||
|
||||
///
|
||||
/// Base class to enable single instance of the same dialog (master) return result to multiple threads (slaves)
|
||||
///
|
||||
class monitor_ui
|
||||
{
|
||||
public:
|
||||
///
|
||||
/// Constructs a UI monitor
|
||||
///
|
||||
monitor_ui(_In_ HINSTANCE module, _In_ const GUID &guid);
|
||||
|
||||
///
|
||||
/// Destructs the UI monitor
|
||||
///
|
||||
virtual ~monitor_ui();
|
||||
|
||||
///
|
||||
/// Sets pop-up window handle
|
||||
///
|
||||
/// \param[in] hwnd Handle of window to set as a new pop-up
|
||||
///
|
||||
void set_popup(_In_ HWND hwnd);
|
||||
|
||||
///
|
||||
/// Notifies all slaves waiting for this master and send them result data
|
||||
///
|
||||
/// \param[in] data Pointer to result data
|
||||
/// \param[in] size \p data size in bytes
|
||||
///
|
||||
void release_slaves(_In_bytecount_(size) const void *data, _In_ size_t size) const;
|
||||
|
||||
///
|
||||
/// Returns true if this is a master
|
||||
///
|
||||
inline bool is_master() const
|
||||
{
|
||||
return m_is_master;
|
||||
}
|
||||
|
||||
///
|
||||
/// Returns true if this is a slave
|
||||
///
|
||||
inline bool is_slave() const
|
||||
{
|
||||
return !is_master();
|
||||
}
|
||||
|
||||
///
|
||||
/// Returns the data master send
|
||||
///
|
||||
inline const std::vector<unsigned char>& master_data() const
|
||||
{
|
||||
return m_data;
|
||||
}
|
||||
|
||||
protected:
|
||||
/// \cond internal
|
||||
|
||||
virtual LRESULT winproc(
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam);
|
||||
|
||||
static LRESULT CALLBACK winproc(
|
||||
_In_ HWND hwnd,
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam);
|
||||
|
||||
/// \endcond
|
||||
|
||||
protected:
|
||||
bool m_is_master; ///< Is this monitor master?
|
||||
HWND m_hwnd; ///< Message window handle
|
||||
std::list<HWND> m_slaves; ///< List of slaves to notify on finish
|
||||
volatile HWND m_hwnd_popup; ///< Pop-up window handle
|
||||
std::vector<unsigned char> m_data; ///< Data master sent
|
||||
|
||||
// Custom window messages
|
||||
static const UINT s_msg_attach; ///< Slave sends this message to attach to master
|
||||
static const UINT s_msg_finish; ///< Master sends this message to slaves to notify them it has finished (wparam has size, lparam has data)
|
||||
};
|
||||
|
||||
/// @}
|
||||
}
|
||||
|
@@ -418,6 +418,55 @@ wxPasswordCredentialsPanelBase::~wxPasswordCredentialsPanelBase()
|
||||
|
||||
}
|
||||
|
||||
wxIdentityCredentialsPanelBase::wxIdentityCredentialsPanelBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, long style, const wxString& name ) : wxEAPCredentialsPanelBase( parent, id, pos, parent->FromDIP(wxSize( 500,-1 )), style, name )
|
||||
{
|
||||
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, FromDIP(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( FromDIP(440) );
|
||||
m_sb_credentials_vert->Add( m_credentials_label, 0, wxALL|wxEXPAND, FromDIP(5) );
|
||||
|
||||
wxFlexGridSizer* sb_credentials_tbl;
|
||||
sb_credentials_tbl = new wxFlexGridSizer( 0, 2, FromDIP(5), FromDIP(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, FromDIP(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, FromDIP(5) );
|
||||
|
||||
|
||||
m_sb_credentials_vert->Add( sb_credentials_tbl, 0, wxEXPAND|wxALL, FromDIP(5) );
|
||||
|
||||
|
||||
sb_credentials_horiz->Add( m_sb_credentials_vert, 1, wxEXPAND, FromDIP(5) );
|
||||
|
||||
|
||||
m_sb_credentials->Add( sb_credentials_horiz, 0, wxEXPAND, FromDIP(5) );
|
||||
|
||||
|
||||
this->SetSizer( m_sb_credentials );
|
||||
this->Layout();
|
||||
}
|
||||
|
||||
wxIdentityCredentialsPanelBase::~wxIdentityCredentialsPanelBase()
|
||||
{
|
||||
}
|
||||
|
||||
wxEAPProviderContactInfoPanelBase::wxEAPProviderContactInfoPanelBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, long style, const wxString& name ) : wxPanel( parent, id, pos, parent->FromDIP(wxSize( 500,-1 )), style, name )
|
||||
{
|
||||
wxStaticBoxSizer* sb_provider_contact;
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -220,6 +220,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, long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
|
||||
~wxIdentityCredentialsPanelBase();
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class wxEAPProviderContactInfoPanelBase
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@@ -467,200 +467,3 @@ void wxEAPProviderSelectDialog::OnProvSelect(wxCommandEvent& event)
|
||||
event.Skip();
|
||||
}
|
||||
/// \endcond
|
||||
|
||||
|
||||
using namespace std;
|
||||
using namespace winstd;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// eap::monitor_ui
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
eap::monitor_ui::monitor_ui(_In_ HINSTANCE module, _In_ const GUID &guid) :
|
||||
m_hwnd_popup(NULL)
|
||||
{
|
||||
// Verify if the monitor is already running.
|
||||
const WNDCLASSEX wnd_class_desc_master = {
|
||||
sizeof(WNDCLASSEX), // cbSize
|
||||
0, // style
|
||||
winproc, // lpfnWndProc
|
||||
0, // cbClsExtra
|
||||
0, // cbWndExtra
|
||||
module, // hInstance
|
||||
NULL, // hIcon
|
||||
NULL, // hCursor
|
||||
NULL, // hbrBackground
|
||||
NULL, // lpszMenuName
|
||||
_T(__FUNCTION__), // lpszClassName
|
||||
NULL // hIconSm
|
||||
};
|
||||
ATOM wnd_class = RegisterClassEx(&wnd_class_desc_master);
|
||||
if (!wnd_class)
|
||||
throw win_runtime_error(__FUNCTION__ " Error registering master monitor window class.");
|
||||
tstring_guid guid_str(guid);
|
||||
HWND hwnd_master = FindWindowEx(HWND_MESSAGE, NULL, reinterpret_cast<LPCTSTR>(wnd_class), guid_str.c_str());
|
||||
if (hwnd_master) {
|
||||
// Another monitor is already running.
|
||||
m_is_master = false;
|
||||
|
||||
// Register slave windows class slightly different, not to include slaves in FindWindowEx().
|
||||
const WNDCLASSEX wnd_class_desc_slave = {
|
||||
sizeof(WNDCLASSEX), // cbSize
|
||||
0, // style
|
||||
winproc, // lpfnWndProc
|
||||
0, // cbClsExtra
|
||||
0, // cbWndExtra
|
||||
module, // hInstance
|
||||
NULL, // hIcon
|
||||
NULL, // hCursor
|
||||
NULL, // hbrBackground
|
||||
NULL, // lpszMenuName
|
||||
_T(__FUNCTION__) _T("-Slave"), // lpszClassName
|
||||
NULL // hIconSm
|
||||
};
|
||||
wnd_class = RegisterClassEx(&wnd_class_desc_slave);
|
||||
if (!wnd_class)
|
||||
throw win_runtime_error(__FUNCTION__ " Error registering slave monitor window class.");
|
||||
} else {
|
||||
// This is a fresh monitor.
|
||||
m_is_master = true;
|
||||
}
|
||||
|
||||
m_hwnd = CreateWindowEx(
|
||||
0, // dwExStyle
|
||||
reinterpret_cast<LPCTSTR>(wnd_class), // lpClassName
|
||||
guid_str.c_str(), // lpWindowName
|
||||
0, // dwStyle
|
||||
0, // x
|
||||
0, // y
|
||||
0, // nWidth
|
||||
0, // nHeight
|
||||
HWND_MESSAGE, // hWndParent
|
||||
NULL, // hMenu
|
||||
module, // hInstance
|
||||
this); // lpParam
|
||||
|
||||
if (!m_is_master) {
|
||||
// Notify master we are waiting him.
|
||||
SendMessage(hwnd_master, s_msg_attach, 0, (LPARAM)m_hwnd);
|
||||
|
||||
// Slaves must pump message queue until finished.
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0) > 0) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
eap::monitor_ui::~monitor_ui()
|
||||
{
|
||||
if (m_hwnd)
|
||||
DestroyWindow(m_hwnd);
|
||||
}
|
||||
|
||||
|
||||
void eap::monitor_ui::set_popup(_In_ HWND hwnd)
|
||||
{
|
||||
m_hwnd_popup = hwnd;
|
||||
}
|
||||
|
||||
|
||||
void eap::monitor_ui::release_slaves(_In_bytecount_(size) const void *data, _In_ size_t size) const
|
||||
{
|
||||
assert(!size || data);
|
||||
|
||||
for (auto slave = m_slaves.cbegin(), slave_end = m_slaves.cend(); slave != slave_end; ++slave) {
|
||||
// Get slave's PID.
|
||||
DWORD pid_slave;
|
||||
GetWindowThreadProcessId(*slave, &pid_slave);
|
||||
|
||||
// Get slave's process handle.
|
||||
process proc_slave;
|
||||
if (!proc_slave.open(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, 0, pid_slave))
|
||||
continue;
|
||||
|
||||
// Allocate memory in slave's virtual memory space and save data to it.
|
||||
vmemory mem_slave;
|
||||
if (!mem_slave.alloc(proc_slave, NULL, size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE))
|
||||
continue;
|
||||
if (!WriteProcessMemory(proc_slave, mem_slave, data, size, NULL))
|
||||
continue;
|
||||
|
||||
// Notify slave. Use SendMessage(), not PostMessage(), as memory will get cleaned up.
|
||||
SendMessage(*slave, s_msg_finish, (WPARAM)size, (LPARAM)(LPVOID)mem_slave);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// \cond internal
|
||||
|
||||
LRESULT eap::monitor_ui::winproc(
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(wparam);
|
||||
|
||||
if (msg == s_msg_attach) {
|
||||
// Attach a new slave.
|
||||
assert(m_is_master);
|
||||
m_slaves.push_back((HWND)lparam);
|
||||
|
||||
if (m_hwnd_popup) {
|
||||
// Bring pop-up window up.
|
||||
if (::IsIconic(m_hwnd_popup))
|
||||
::SendMessage(m_hwnd_popup, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
::SetActiveWindow(m_hwnd_popup);
|
||||
::SetForegroundWindow(m_hwnd_popup);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
} else if (msg == s_msg_finish) {
|
||||
// Master finished.
|
||||
assert(!m_is_master);
|
||||
m_data.assign(reinterpret_cast<const unsigned char*>(lparam), reinterpret_cast<const unsigned char*>(lparam) + wparam);
|
||||
|
||||
// Finish slave too.
|
||||
DestroyWindow(m_hwnd);
|
||||
return TRUE;
|
||||
} else if (msg == WM_DESTROY) {
|
||||
// Stop the message pump.
|
||||
PostQuitMessage(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return DefWindowProc(m_hwnd, msg, wparam, lparam);
|
||||
}
|
||||
|
||||
|
||||
LRESULT CALLBACK eap::monitor_ui::winproc(
|
||||
_In_ HWND hwnd,
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam)
|
||||
{
|
||||
if (msg == WM_CREATE) {
|
||||
// Set window's user data to "this" pointer.
|
||||
const CREATESTRUCT *cs = (CREATESTRUCT*)lparam;
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)cs->lpCreateParams);
|
||||
|
||||
// Forward to our handler.
|
||||
return ((eap::monitor_ui*)cs->lpCreateParams)->winproc(msg, wparam, lparam);
|
||||
} else {
|
||||
// Get "this" pointer from window's user data.
|
||||
eap::monitor_ui *_this = (eap::monitor_ui*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
if (_this) {
|
||||
// Forward to our handler.
|
||||
return _this->winproc(msg, wparam, lparam);
|
||||
} else
|
||||
return DefWindowProc(hwnd, msg, wparam, lparam);
|
||||
}
|
||||
}
|
||||
|
||||
/// \endcond
|
||||
|
||||
|
||||
const UINT eap::monitor_ui::s_msg_attach = RegisterWindowMessage(_T(PRODUCT_NAME_STR) _T("-Attach"));
|
||||
const UINT eap::monitor_ui::s_msg_finish = RegisterWindowMessage(_T(PRODUCT_NAME_STR) _T("-Finish"));
|
||||
|
@@ -30,3 +30,208 @@ using namespace winstd;
|
||||
eap::peer_ui::peer_ui(_In_ eap_type_t eap_method) : module(eap_method)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// eap::monitor_ui
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
eap::monitor_ui::monitor_ui(_In_ HINSTANCE module, _In_ const GUID &guid) :
|
||||
m_hwnd_popup(NULL)
|
||||
{
|
||||
// Verify if the monitor is already running.
|
||||
const WNDCLASSEX wnd_class_desc_master = {
|
||||
sizeof(WNDCLASSEX), // cbSize
|
||||
0, // style
|
||||
winproc, // lpfnWndProc
|
||||
0, // cbClsExtra
|
||||
0, // cbWndExtra
|
||||
module, // hInstance
|
||||
NULL, // hIcon
|
||||
NULL, // hCursor
|
||||
NULL, // hbrBackground
|
||||
NULL, // lpszMenuName
|
||||
_T(__FUNCTION__), // lpszClassName
|
||||
NULL // hIconSm
|
||||
};
|
||||
LPCTSTR wnd_class = reinterpret_cast<LPCTSTR>(RegisterClassEx(&wnd_class_desc_master));
|
||||
if (!wnd_class) {
|
||||
DWORD dwResult = GetLastError();
|
||||
if (dwResult == ERROR_CLASS_ALREADY_EXISTS)
|
||||
wnd_class = _T(__FUNCTION__);
|
||||
else
|
||||
throw win_runtime_error(dwResult, __FUNCTION__ " Error registering master monitor window class.");
|
||||
}
|
||||
tstring_guid guid_str(guid);
|
||||
HWND hwnd_master = FindWindowEx(HWND_MESSAGE, NULL, wnd_class, guid_str.c_str());
|
||||
if (hwnd_master) {
|
||||
// Another monitor is already running.
|
||||
m_is_master = false;
|
||||
|
||||
// Register slave windows class slightly different, not to include slaves in FindWindowEx().
|
||||
const WNDCLASSEX wnd_class_desc_slave = {
|
||||
sizeof(WNDCLASSEX), // cbSize
|
||||
0, // style
|
||||
winproc, // lpfnWndProc
|
||||
0, // cbClsExtra
|
||||
0, // cbWndExtra
|
||||
module, // hInstance
|
||||
NULL, // hIcon
|
||||
NULL, // hCursor
|
||||
NULL, // hbrBackground
|
||||
NULL, // lpszMenuName
|
||||
_T(__FUNCTION__) _T("-Slave"), // lpszClassName
|
||||
NULL // hIconSm
|
||||
};
|
||||
wnd_class = reinterpret_cast<LPCTSTR>(RegisterClassEx(&wnd_class_desc_slave));
|
||||
if (!wnd_class) {
|
||||
DWORD dwResult = GetLastError();
|
||||
if (dwResult == ERROR_CLASS_ALREADY_EXISTS)
|
||||
wnd_class = _T(__FUNCTION__) _T("-Slave");
|
||||
else
|
||||
throw win_runtime_error(dwResult, __FUNCTION__ " Error registering slave monitor window class.");
|
||||
}
|
||||
} else {
|
||||
// This is a fresh monitor.
|
||||
m_is_master = true;
|
||||
}
|
||||
|
||||
m_hwnd = CreateWindowEx(
|
||||
0, // dwExStyle
|
||||
reinterpret_cast<LPCTSTR>(wnd_class), // lpClassName
|
||||
guid_str.c_str(), // lpWindowName
|
||||
0, // dwStyle
|
||||
0, // x
|
||||
0, // y
|
||||
0, // nWidth
|
||||
0, // nHeight
|
||||
HWND_MESSAGE, // hWndParent
|
||||
NULL, // hMenu
|
||||
module, // hInstance
|
||||
this); // lpParam
|
||||
|
||||
if (!m_is_master) {
|
||||
// Notify master we are waiting him.
|
||||
SendMessage(hwnd_master, s_msg_attach, 0, (LPARAM)m_hwnd);
|
||||
|
||||
// Slaves must pump message queue until finished.
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0) > 0) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
eap::monitor_ui::~monitor_ui()
|
||||
{
|
||||
if (m_hwnd)
|
||||
DestroyWindow(m_hwnd);
|
||||
}
|
||||
|
||||
|
||||
void eap::monitor_ui::set_popup(_In_ HWND hwnd)
|
||||
{
|
||||
m_hwnd_popup = hwnd;
|
||||
}
|
||||
|
||||
|
||||
void eap::monitor_ui::release_slaves(_In_bytecount_(size) const void *data, _In_ size_t size) const
|
||||
{
|
||||
assert(!size || data);
|
||||
|
||||
for (auto slave = m_slaves.cbegin(), slave_end = m_slaves.cend(); slave != slave_end; ++slave) {
|
||||
// Get slave's PID.
|
||||
DWORD pid_slave;
|
||||
GetWindowThreadProcessId(*slave, &pid_slave);
|
||||
|
||||
// Get slave's process handle.
|
||||
process proc_slave;
|
||||
if (!proc_slave.open(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, 0, pid_slave))
|
||||
continue;
|
||||
|
||||
// Allocate memory in slave's virtual memory space and save data to it.
|
||||
vmemory mem_slave;
|
||||
if (!mem_slave.alloc(proc_slave, NULL, size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE))
|
||||
continue;
|
||||
if (!WriteProcessMemory(proc_slave, mem_slave, data, size, NULL))
|
||||
continue;
|
||||
|
||||
// Notify slave. Use SendMessage(), not PostMessage(), as memory will get cleaned up.
|
||||
SendMessage(*slave, s_msg_finish, (WPARAM)size, (LPARAM)(LPVOID)mem_slave);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// \cond internal
|
||||
|
||||
LRESULT eap::monitor_ui::winproc(
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(wparam);
|
||||
|
||||
if (msg == s_msg_attach) {
|
||||
// Attach a new slave.
|
||||
assert(m_is_master);
|
||||
m_slaves.push_back((HWND)lparam);
|
||||
|
||||
HWND hwnd_popup = m_hwnd_popup;
|
||||
if (hwnd_popup) {
|
||||
// Bring pop-up window up.
|
||||
if (::IsIconic(hwnd_popup))
|
||||
::SendMessage(hwnd_popup, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
::SetActiveWindow(hwnd_popup);
|
||||
::SetForegroundWindow(hwnd_popup);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
} else if (msg == s_msg_finish) {
|
||||
// Master finished.
|
||||
assert(!m_is_master);
|
||||
m_data.assign(reinterpret_cast<const unsigned char*>(lparam), reinterpret_cast<const unsigned char*>(lparam) + wparam);
|
||||
|
||||
// Finish slave too.
|
||||
DestroyWindow(m_hwnd);
|
||||
return TRUE;
|
||||
} else if (msg == WM_DESTROY) {
|
||||
// Stop the message pump.
|
||||
PostQuitMessage(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return DefWindowProc(m_hwnd, msg, wparam, lparam);
|
||||
}
|
||||
|
||||
|
||||
LRESULT CALLBACK eap::monitor_ui::winproc(
|
||||
_In_ HWND hwnd,
|
||||
_In_ UINT msg,
|
||||
_In_ WPARAM wparam,
|
||||
_In_ LPARAM lparam)
|
||||
{
|
||||
if (msg == WM_CREATE) {
|
||||
// Set window's user data to "this" pointer.
|
||||
const CREATESTRUCT *cs = (CREATESTRUCT*)lparam;
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)cs->lpCreateParams);
|
||||
|
||||
// Forward to our handler.
|
||||
return ((eap::monitor_ui*)cs->lpCreateParams)->winproc(msg, wparam, lparam);
|
||||
} else {
|
||||
// Get "this" pointer from window's user data.
|
||||
eap::monitor_ui *_this = (eap::monitor_ui*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
if (_this) {
|
||||
// Forward to our handler.
|
||||
return _this->winproc(msg, wparam, lparam);
|
||||
} else
|
||||
return DefWindowProc(hwnd, msg, wparam, lparam);
|
||||
}
|
||||
}
|
||||
|
||||
/// \endcond
|
||||
|
||||
|
||||
const UINT eap::monitor_ui::s_msg_attach = RegisterWindowMessage(_T(PRODUCT_NAME_STR) _T("-Attach"));
|
||||
const UINT eap::monitor_ui::s_msg_finish = RegisterWindowMessage(_T(PRODUCT_NAME_STR) _T("-Finish"));
|
||||
|
@@ -29,26 +29,26 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{B385EC2B-C3F4-48BB-9BAC-8B996DE7F754}</ProjectGuid>
|
||||
<RootNamespace>EapHost</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</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>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -56,21 +56,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
|
@@ -65,7 +65,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Configuration to move from
|
||||
///
|
||||
config_method_eaphost(_Inout_ config_method_eaphost &&other);
|
||||
config_method_eaphost(_Inout_ config_method_eaphost &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies configuration
|
||||
@@ -83,7 +83,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
config_method_eaphost& operator=(_Inout_ config_method_eaphost &&other);
|
||||
config_method_eaphost& operator=(_Inout_ config_method_eaphost &&other) noexcept;
|
||||
|
||||
virtual config* clone() const;
|
||||
|
||||
|
@@ -67,7 +67,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other Credentials to move from
|
||||
///
|
||||
credentials_eaphost(_Inout_ credentials_eaphost &&other);
|
||||
credentials_eaphost(_Inout_ credentials_eaphost &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Copies credentials
|
||||
@@ -85,7 +85,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
credentials_eaphost& operator=(_Inout_ credentials_eaphost &&other);
|
||||
credentials_eaphost& operator=(_Inout_ credentials_eaphost &&other) noexcept;
|
||||
|
||||
virtual config* clone() const;
|
||||
virtual void clear();
|
||||
@@ -136,7 +136,7 @@ namespace eap
|
||||
///
|
||||
virtual source_t combine(
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ const credentials *cred_cached,
|
||||
_In_ const config_method &cfg,
|
||||
_In_opt_z_ LPCTSTR pszTargetName);
|
||||
|
@@ -61,7 +61,7 @@ namespace eap
|
||||
///
|
||||
/// \param[in] other EAP method to move from
|
||||
///
|
||||
method_eaphost(_Inout_ method_eaphost &&other);
|
||||
method_eaphost(_Inout_ method_eaphost &&other) noexcept;
|
||||
|
||||
///
|
||||
/// Moves an EAP method
|
||||
@@ -70,7 +70,7 @@ namespace eap
|
||||
///
|
||||
/// \returns Reference to this object
|
||||
///
|
||||
method_eaphost& operator=(_Inout_ method_eaphost &&other);
|
||||
method_eaphost& operator=(_Inout_ method_eaphost &&other) noexcept;
|
||||
|
||||
/// \name Session management
|
||||
/// @{
|
||||
@@ -99,8 +99,8 @@ namespace eap
|
||||
/// @}
|
||||
|
||||
virtual void get_result(
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Out_ EapPeerMethodResult *pResult);
|
||||
_In_ EapPeerMethodResultReason reason,
|
||||
_Inout_ EapPeerMethodResult *pResult);
|
||||
|
||||
/// \name User Interaction
|
||||
/// @{
|
||||
|
@@ -45,7 +45,7 @@ eap::config_method_eaphost::config_method_eaphost(_In_ const config_method_eapho
|
||||
}
|
||||
|
||||
|
||||
eap::config_method_eaphost::config_method_eaphost(_Inout_ config_method_eaphost &&other) :
|
||||
eap::config_method_eaphost::config_method_eaphost(_Inout_ config_method_eaphost &&other) noexcept :
|
||||
m_type (std::move(other.m_type )),
|
||||
m_type_str (std::move(other.m_type_str)),
|
||||
m_cfg_blob (std::move(other.m_cfg_blob)),
|
||||
@@ -67,7 +67,7 @@ eap::config_method_eaphost& eap::config_method_eaphost::operator=(_In_ const con
|
||||
}
|
||||
|
||||
|
||||
eap::config_method_eaphost& eap::config_method_eaphost::operator=(_Inout_ config_method_eaphost &&other)
|
||||
eap::config_method_eaphost& eap::config_method_eaphost::operator=(_Inout_ config_method_eaphost &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(config_method&&)*this = std::move(other );
|
||||
@@ -130,7 +130,7 @@ void eap::config_method_eaphost::load(_In_ IXMLDOMNode *pConfigRoot)
|
||||
DWORD dwResult = EapHostPeerConfigXml2Blob(0, pXmlElEapHostConfig, &cfg_data_size, get_ptr(cfg_data), &m_type, get_ptr(error));
|
||||
if (dwResult == ERROR_SUCCESS) {
|
||||
update_type();
|
||||
const BYTE *_cfg_data = cfg_data.get();
|
||||
LPCBYTE _cfg_data = cfg_data.get();
|
||||
m_cfg_blob.assign(_cfg_data, _cfg_data + cfg_data_size);
|
||||
} else if (error)
|
||||
throw eap_runtime_error(*error , __FUNCTION__ " EapHostPeerConfigXml2Blob failed.");
|
||||
|
@@ -42,7 +42,7 @@ eap::credentials_eaphost::credentials_eaphost(_In_ const credentials_eaphost &ot
|
||||
}
|
||||
|
||||
|
||||
eap::credentials_eaphost::credentials_eaphost(_Inout_ credentials_eaphost &&other) :
|
||||
eap::credentials_eaphost::credentials_eaphost(_Inout_ credentials_eaphost &&other) noexcept :
|
||||
m_cred_blob(std::move(other.m_cred_blob)),
|
||||
credentials(std::move(other ))
|
||||
{
|
||||
@@ -60,7 +60,7 @@ eap::credentials_eaphost& eap::credentials_eaphost::operator=(_In_ const credent
|
||||
}
|
||||
|
||||
|
||||
eap::credentials_eaphost& eap::credentials_eaphost::operator=(_Inout_ credentials_eaphost &&other)
|
||||
eap::credentials_eaphost& eap::credentials_eaphost::operator=(_Inout_ credentials_eaphost &&other) noexcept
|
||||
{
|
||||
if (this != &other) {
|
||||
(credentials&)*this = std::move(other);
|
||||
@@ -220,7 +220,7 @@ LPCTSTR eap::credentials_eaphost::target_suffix() const
|
||||
|
||||
eap::credentials::source_t eap::credentials_eaphost::combine(
|
||||
_In_ DWORD dwFlags,
|
||||
_In_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ HANDLE hTokenImpersonateUser,
|
||||
_In_opt_ const credentials *cred_cached,
|
||||
_In_ const config_method &cfg,
|
||||
_In_opt_z_ LPCTSTR pszTargetName)
|
||||
|
@@ -37,7 +37,7 @@ eap::method_eaphost::method_eaphost(_In_ module &mod, _In_ config_method_eaphost
|
||||
}
|
||||
|
||||
|
||||
eap::method_eaphost::method_eaphost(_Inout_ method_eaphost &&other) :
|
||||
eap::method_eaphost::method_eaphost(_Inout_ method_eaphost &&other) noexcept :
|
||||
m_cfg ( other.m_cfg ),
|
||||
m_cred ( other.m_cred ),
|
||||
m_session_id(std::move(other.m_session_id)),
|
||||
@@ -46,7 +46,7 @@ eap::method_eaphost::method_eaphost(_Inout_ method_eaphost &&other) :
|
||||
}
|
||||
|
||||
|
||||
eap::method_eaphost& eap::method_eaphost::operator=(_Inout_ method_eaphost &&other)
|
||||
eap::method_eaphost& eap::method_eaphost::operator=(_Inout_ method_eaphost &&other) noexcept
|
||||
{
|
||||
if (this != std::addressof(other)) {
|
||||
assert(std::addressof(m_cfg ) == std::addressof(other.m_cfg )); // Move method within same configuration only!
|
||||
@@ -151,7 +151,7 @@ void eap::method_eaphost::get_response_packet(
|
||||
get_ptr(error));
|
||||
if (dwResult == ERROR_SUCCESS) {
|
||||
// Packet successfuly prepared.
|
||||
const BYTE *__packet = _packet.get();
|
||||
LPCBYTE __packet = _packet.get();
|
||||
packet.assign(__packet, __packet + size_max);
|
||||
} else if (error)
|
||||
throw eap_runtime_error(*error , __FUNCTION__ " EapHostPeerGetSendPacket failed.");
|
||||
@@ -257,7 +257,7 @@ EapPeerMethodResponseAction eap::method_eaphost::set_ui_context(
|
||||
}
|
||||
|
||||
|
||||
void eap::method_eaphost::get_response_attributes(_Inout_ EapAttributes *pAttribs)
|
||||
void eap::method_eaphost::get_response_attributes(_Out_ EapAttributes *pAttribs)
|
||||
{
|
||||
// Get response attributes from EapHost peer.
|
||||
eap_error_runtime error;
|
||||
|
@@ -29,26 +29,26 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{13D2D8B5-F6AA-459D-B5F7-29B95DD9D583}</ProjectGuid>
|
||||
<RootNamespace>EapHost_UI</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</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>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
@@ -56,21 +56,21 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user