passwordping 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.gitmodules +3 -0
- data/Gemfile +4 -0
- data/LICENSE +5 -0
- data/README.md +89 -0
- data/Rakefile +11 -0
- data/ext/argon2-wrapper/Makefile +74 -0
- data/ext/argon2-wrapper/extconf.rb +1 -0
- data/ext/phc-winner-argon2/.gitattributes +10 -0
- data/ext/phc-winner-argon2/.gitignore +21 -0
- data/ext/phc-winner-argon2/.travis.yml +14 -0
- data/ext/phc-winner-argon2/Argon2.sln +160 -0
- data/ext/phc-winner-argon2/CHANGELOG.md +25 -0
- data/ext/phc-winner-argon2/LICENSE +314 -0
- data/ext/phc-winner-argon2/Makefile +187 -0
- data/ext/phc-winner-argon2/README.md +290 -0
- data/ext/phc-winner-argon2/appveyor.yml +25 -0
- data/ext/phc-winner-argon2/argon2-specs.pdf +0 -0
- data/ext/phc-winner-argon2/export.sh +7 -0
- data/ext/phc-winner-argon2/include/argon2.h +435 -0
- data/ext/phc-winner-argon2/kats/argon2d +12304 -0
- data/ext/phc-winner-argon2/kats/argon2d.shasum +1 -0
- data/ext/phc-winner-argon2/kats/argon2d_v16 +12304 -0
- data/ext/phc-winner-argon2/kats/argon2d_v16.shasum +1 -0
- data/ext/phc-winner-argon2/kats/argon2i +12304 -0
- data/ext/phc-winner-argon2/kats/argon2i.shasum +1 -0
- data/ext/phc-winner-argon2/kats/argon2i_v16 +12304 -0
- data/ext/phc-winner-argon2/kats/argon2i_v16.shasum +1 -0
- data/ext/phc-winner-argon2/kats/argon2id +12304 -0
- data/ext/phc-winner-argon2/kats/argon2id.shasum +1 -0
- data/ext/phc-winner-argon2/kats/argon2id_v16 +12304 -0
- data/ext/phc-winner-argon2/kats/argon2id_v16.shasum +1 -0
- data/ext/phc-winner-argon2/kats/check-sums.ps1 +42 -0
- data/ext/phc-winner-argon2/kats/check-sums.sh +13 -0
- data/ext/phc-winner-argon2/kats/test.ps1 +50 -0
- data/ext/phc-winner-argon2/kats/test.sh +49 -0
- data/ext/phc-winner-argon2/latex/IEEEtran.cls +6347 -0
- data/ext/phc-winner-argon2/latex/Makefile +18 -0
- data/ext/phc-winner-argon2/latex/argon2-specs.tex +920 -0
- data/ext/phc-winner-argon2/latex/pics/argon2-par.pdf +0 -0
- data/ext/phc-winner-argon2/latex/pics/compression.pdf +0 -0
- data/ext/phc-winner-argon2/latex/pics/generic.pdf +0 -0
- data/ext/phc-winner-argon2/latex/pics/power-distribution.jpg +0 -0
- data/ext/phc-winner-argon2/latex/tradeoff.bib +822 -0
- data/ext/phc-winner-argon2/libargon2.pc +16 -0
- data/ext/phc-winner-argon2/man/argon2.1 +57 -0
- data/ext/phc-winner-argon2/src/argon2.c +452 -0
- data/ext/phc-winner-argon2/src/bench.c +111 -0
- data/ext/phc-winner-argon2/src/blake2/blake2-impl.h +156 -0
- data/ext/phc-winner-argon2/src/blake2/blake2.h +91 -0
- data/ext/phc-winner-argon2/src/blake2/blake2b.c +390 -0
- data/ext/phc-winner-argon2/src/blake2/blamka-round-opt.h +328 -0
- data/ext/phc-winner-argon2/src/blake2/blamka-round-ref.h +56 -0
- data/ext/phc-winner-argon2/src/core.c +635 -0
- data/ext/phc-winner-argon2/src/core.h +227 -0
- data/ext/phc-winner-argon2/src/encoding.c +463 -0
- data/ext/phc-winner-argon2/src/encoding.h +57 -0
- data/ext/phc-winner-argon2/src/genkat.c +208 -0
- data/ext/phc-winner-argon2/src/genkat.h +49 -0
- data/ext/phc-winner-argon2/src/opt.c +241 -0
- data/ext/phc-winner-argon2/src/ref.c +194 -0
- data/ext/phc-winner-argon2/src/run.c +317 -0
- data/ext/phc-winner-argon2/src/test.c +254 -0
- data/ext/phc-winner-argon2/src/thread.c +57 -0
- data/ext/phc-winner-argon2/src/thread.h +67 -0
- data/ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj +226 -0
- data/ext/phc-winner-argon2/vs2015/Argon2Opt/Argon2Opt.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj +226 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptBench/Argon2OptBench.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj +225 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptDll/Argon2OptDll.vcxproj.filters +66 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj +239 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptGenKAT/Argon2OptGenKAT.vcxproj.filters +72 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj +227 -0
- data/ext/phc-winner-argon2/vs2015/Argon2OptTestCI/Argon2OptTestCI.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj +226 -0
- data/ext/phc-winner-argon2/vs2015/Argon2Ref/Argon2Ref.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj +226 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefBench/Argon2RefBench.vcxproj.filters +69 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj +225 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefDll/Argon2RefDll.vcxproj.filters +66 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj +227 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefGenKAT/Argon2RefGenKAT.vcxproj.filters +72 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj +226 -0
- data/ext/phc-winner-argon2/vs2015/Argon2RefTestCI/Argon2RefTestCI.vcxproj.filters +69 -0
- data/lib/passwordping.rb +186 -0
- data/lib/passwordping/argon2_wrapper_ffi.rb +89 -0
- data/lib/passwordping/constants.rb +10 -0
- data/lib/passwordping/errors.rb +3 -0
- data/lib/passwordping/hashing.rb +160 -0
- data/lib/passwordping/password_type.rb +24 -0
- data/lib/passwordping/version.rb +5 -0
- data/passwordping.gemspec +34 -0
- metadata +304 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
|
+
<ItemGroup>
|
|
4
|
+
<Filter Include="Source Files">
|
|
5
|
+
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
6
|
+
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
7
|
+
</Filter>
|
|
8
|
+
<Filter Include="Header Files">
|
|
9
|
+
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
10
|
+
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
|
11
|
+
</Filter>
|
|
12
|
+
<Filter Include="Resource Files">
|
|
13
|
+
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
14
|
+
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
15
|
+
</Filter>
|
|
16
|
+
</ItemGroup>
|
|
17
|
+
<ItemGroup>
|
|
18
|
+
<ClInclude Include="..\..\include\argon2.h">
|
|
19
|
+
<Filter>Header Files</Filter>
|
|
20
|
+
</ClInclude>
|
|
21
|
+
<ClInclude Include="..\..\src\core.h">
|
|
22
|
+
<Filter>Header Files</Filter>
|
|
23
|
+
</ClInclude>
|
|
24
|
+
<ClInclude Include="..\..\src\encoding.h">
|
|
25
|
+
<Filter>Header Files</Filter>
|
|
26
|
+
</ClInclude>
|
|
27
|
+
<ClInclude Include="..\..\src\genkat.h">
|
|
28
|
+
<Filter>Header Files</Filter>
|
|
29
|
+
</ClInclude>
|
|
30
|
+
<ClInclude Include="..\..\src\ref.h">
|
|
31
|
+
<Filter>Header Files</Filter>
|
|
32
|
+
</ClInclude>
|
|
33
|
+
<ClInclude Include="..\..\src\thread.h">
|
|
34
|
+
<Filter>Header Files</Filter>
|
|
35
|
+
</ClInclude>
|
|
36
|
+
<ClInclude Include="..\..\src\blake2\blake2.h">
|
|
37
|
+
<Filter>Header Files</Filter>
|
|
38
|
+
</ClInclude>
|
|
39
|
+
<ClInclude Include="..\..\src\blake2\blake2-impl.h">
|
|
40
|
+
<Filter>Header Files</Filter>
|
|
41
|
+
</ClInclude>
|
|
42
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-opt.h">
|
|
43
|
+
<Filter>Header Files</Filter>
|
|
44
|
+
</ClInclude>
|
|
45
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-ref.h">
|
|
46
|
+
<Filter>Header Files</Filter>
|
|
47
|
+
</ClInclude>
|
|
48
|
+
</ItemGroup>
|
|
49
|
+
<ItemGroup>
|
|
50
|
+
<ClCompile Include="..\..\src\blake2\blake2b.c">
|
|
51
|
+
<Filter>Source Files</Filter>
|
|
52
|
+
</ClCompile>
|
|
53
|
+
<ClCompile Include="..\..\src\argon2.c">
|
|
54
|
+
<Filter>Source Files</Filter>
|
|
55
|
+
</ClCompile>
|
|
56
|
+
<ClCompile Include="..\..\src\core.c">
|
|
57
|
+
<Filter>Source Files</Filter>
|
|
58
|
+
</ClCompile>
|
|
59
|
+
<ClCompile Include="..\..\src\encoding.c">
|
|
60
|
+
<Filter>Source Files</Filter>
|
|
61
|
+
</ClCompile>
|
|
62
|
+
<ClCompile Include="..\..\src\genkat.c">
|
|
63
|
+
<Filter>Source Files</Filter>
|
|
64
|
+
</ClCompile>
|
|
65
|
+
<ClCompile Include="..\..\src\ref.c">
|
|
66
|
+
<Filter>Source Files</Filter>
|
|
67
|
+
</ClCompile>
|
|
68
|
+
<ClCompile Include="..\..\src\thread.c">
|
|
69
|
+
<Filter>Source Files</Filter>
|
|
70
|
+
</ClCompile>
|
|
71
|
+
</ItemGroup>
|
|
72
|
+
</Project>
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
|
+
<ItemGroup Label="ProjectConfigurations">
|
|
4
|
+
<ProjectConfiguration Include="Debug|Win32">
|
|
5
|
+
<Configuration>Debug</Configuration>
|
|
6
|
+
<Platform>Win32</Platform>
|
|
7
|
+
</ProjectConfiguration>
|
|
8
|
+
<ProjectConfiguration Include="ReleaseStatic|Win32">
|
|
9
|
+
<Configuration>ReleaseStatic</Configuration>
|
|
10
|
+
<Platform>Win32</Platform>
|
|
11
|
+
</ProjectConfiguration>
|
|
12
|
+
<ProjectConfiguration Include="ReleaseStatic|x64">
|
|
13
|
+
<Configuration>ReleaseStatic</Configuration>
|
|
14
|
+
<Platform>x64</Platform>
|
|
15
|
+
</ProjectConfiguration>
|
|
16
|
+
<ProjectConfiguration Include="Release|Win32">
|
|
17
|
+
<Configuration>Release</Configuration>
|
|
18
|
+
<Platform>Win32</Platform>
|
|
19
|
+
</ProjectConfiguration>
|
|
20
|
+
<ProjectConfiguration Include="Debug|x64">
|
|
21
|
+
<Configuration>Debug</Configuration>
|
|
22
|
+
<Platform>x64</Platform>
|
|
23
|
+
</ProjectConfiguration>
|
|
24
|
+
<ProjectConfiguration Include="Release|x64">
|
|
25
|
+
<Configuration>Release</Configuration>
|
|
26
|
+
<Platform>x64</Platform>
|
|
27
|
+
</ProjectConfiguration>
|
|
28
|
+
</ItemGroup>
|
|
29
|
+
<PropertyGroup Label="Globals">
|
|
30
|
+
<ProjectGuid>{8A1F7F84-34AF-4DB2-9D58-D4823DFE79E9}</ProjectGuid>
|
|
31
|
+
<RootNamespace>Argon2RefTestCI</RootNamespace>
|
|
32
|
+
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
|
33
|
+
</PropertyGroup>
|
|
34
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
35
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
36
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
37
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
|
38
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
39
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
40
|
+
</PropertyGroup>
|
|
41
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
42
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
43
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
|
44
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
45
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
46
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
47
|
+
</PropertyGroup>
|
|
48
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|Win32'" Label="Configuration">
|
|
49
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
50
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
|
51
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
52
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
53
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
54
|
+
</PropertyGroup>
|
|
55
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
56
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
57
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
|
58
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
59
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
60
|
+
</PropertyGroup>
|
|
61
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
62
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
63
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
|
64
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
65
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
66
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
67
|
+
</PropertyGroup>
|
|
68
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'" Label="Configuration">
|
|
69
|
+
<ConfigurationType>Application</ConfigurationType>
|
|
70
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
|
71
|
+
<PlatformToolset>v140</PlatformToolset>
|
|
72
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
73
|
+
<CharacterSet>MultiByte</CharacterSet>
|
|
74
|
+
</PropertyGroup>
|
|
75
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
76
|
+
<ImportGroup Label="ExtensionSettings">
|
|
77
|
+
</ImportGroup>
|
|
78
|
+
<ImportGroup Label="Shared">
|
|
79
|
+
</ImportGroup>
|
|
80
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
81
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
82
|
+
</ImportGroup>
|
|
83
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
84
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
85
|
+
</ImportGroup>
|
|
86
|
+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|Win32'" Label="PropertySheets">
|
|
87
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
88
|
+
</ImportGroup>
|
|
89
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
90
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
91
|
+
</ImportGroup>
|
|
92
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
93
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
94
|
+
</ImportGroup>
|
|
95
|
+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'" Label="PropertySheets">
|
|
96
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
97
|
+
</ImportGroup>
|
|
98
|
+
<PropertyGroup Label="UserMacros" />
|
|
99
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
100
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
101
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
102
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
103
|
+
</PropertyGroup>
|
|
104
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
105
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
106
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
107
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
108
|
+
</PropertyGroup>
|
|
109
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|Win32'">
|
|
110
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
111
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
112
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
113
|
+
</PropertyGroup>
|
|
114
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
115
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
116
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
117
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
118
|
+
</PropertyGroup>
|
|
119
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
120
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
121
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
122
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
123
|
+
</PropertyGroup>
|
|
124
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'">
|
|
125
|
+
<IncludePath>$(SolutionDir)include;$(IncludePath)</IncludePath>
|
|
126
|
+
<OutDir>$(SolutionDir)vs2015\build\</OutDir>
|
|
127
|
+
<IntDir>$(SolutionDir)vs2015\build\$(ProjectName)\</IntDir>
|
|
128
|
+
</PropertyGroup>
|
|
129
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
130
|
+
<ClCompile>
|
|
131
|
+
<WarningLevel>Level3</WarningLevel>
|
|
132
|
+
<Optimization>Disabled</Optimization>
|
|
133
|
+
<SDLCheck>true</SDLCheck>
|
|
134
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
135
|
+
</ClCompile>
|
|
136
|
+
</ItemDefinitionGroup>
|
|
137
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
138
|
+
<ClCompile>
|
|
139
|
+
<WarningLevel>Level3</WarningLevel>
|
|
140
|
+
<Optimization>Disabled</Optimization>
|
|
141
|
+
<SDLCheck>true</SDLCheck>
|
|
142
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
143
|
+
</ClCompile>
|
|
144
|
+
</ItemDefinitionGroup>
|
|
145
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
146
|
+
<ClCompile>
|
|
147
|
+
<WarningLevel>Level3</WarningLevel>
|
|
148
|
+
<Optimization>MaxSpeed</Optimization>
|
|
149
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
150
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
151
|
+
<SDLCheck>true</SDLCheck>
|
|
152
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
153
|
+
</ClCompile>
|
|
154
|
+
<Link>
|
|
155
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
156
|
+
<OptimizeReferences>true</OptimizeReferences>
|
|
157
|
+
</Link>
|
|
158
|
+
</ItemDefinitionGroup>
|
|
159
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|Win32'">
|
|
160
|
+
<ClCompile>
|
|
161
|
+
<WarningLevel>Level3</WarningLevel>
|
|
162
|
+
<Optimization>MaxSpeed</Optimization>
|
|
163
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
164
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
165
|
+
<SDLCheck>true</SDLCheck>
|
|
166
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
167
|
+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
|
168
|
+
</ClCompile>
|
|
169
|
+
<Link>
|
|
170
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
171
|
+
<OptimizeReferences>true</OptimizeReferences>
|
|
172
|
+
</Link>
|
|
173
|
+
</ItemDefinitionGroup>
|
|
174
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
175
|
+
<ClCompile>
|
|
176
|
+
<WarningLevel>Level3</WarningLevel>
|
|
177
|
+
<Optimization>MaxSpeed</Optimization>
|
|
178
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
179
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
180
|
+
<SDLCheck>true</SDLCheck>
|
|
181
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
182
|
+
</ClCompile>
|
|
183
|
+
<Link>
|
|
184
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
185
|
+
<OptimizeReferences>true</OptimizeReferences>
|
|
186
|
+
</Link>
|
|
187
|
+
</ItemDefinitionGroup>
|
|
188
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'">
|
|
189
|
+
<ClCompile>
|
|
190
|
+
<WarningLevel>Level3</WarningLevel>
|
|
191
|
+
<Optimization>MaxSpeed</Optimization>
|
|
192
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
193
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
194
|
+
<SDLCheck>true</SDLCheck>
|
|
195
|
+
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
196
|
+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
|
197
|
+
</ClCompile>
|
|
198
|
+
<Link>
|
|
199
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
200
|
+
<OptimizeReferences>true</OptimizeReferences>
|
|
201
|
+
</Link>
|
|
202
|
+
</ItemDefinitionGroup>
|
|
203
|
+
<ItemGroup>
|
|
204
|
+
<ClCompile Include="..\..\src\argon2.c" />
|
|
205
|
+
<ClCompile Include="..\..\src\blake2\blake2b.c" />
|
|
206
|
+
<ClCompile Include="..\..\src\core.c" />
|
|
207
|
+
<ClCompile Include="..\..\src\encoding.c" />
|
|
208
|
+
<ClCompile Include="..\..\src\ref.c" />
|
|
209
|
+
<ClCompile Include="..\..\src\test.c" />
|
|
210
|
+
<ClCompile Include="..\..\src\thread.c" />
|
|
211
|
+
</ItemGroup>
|
|
212
|
+
<ItemGroup>
|
|
213
|
+
<ClInclude Include="..\..\include\argon2.h" />
|
|
214
|
+
<ClInclude Include="..\..\src\blake2\blake2-impl.h" />
|
|
215
|
+
<ClInclude Include="..\..\src\blake2\blake2.h" />
|
|
216
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-opt.h" />
|
|
217
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-ref.h" />
|
|
218
|
+
<ClInclude Include="..\..\src\core.h" />
|
|
219
|
+
<ClInclude Include="..\..\src\encoding.h" />
|
|
220
|
+
<ClInclude Include="..\..\src\ref.h" />
|
|
221
|
+
<ClInclude Include="..\..\src\thread.h" />
|
|
222
|
+
</ItemGroup>
|
|
223
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
224
|
+
<ImportGroup Label="ExtensionTargets">
|
|
225
|
+
</ImportGroup>
|
|
226
|
+
</Project>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
|
+
<ItemGroup>
|
|
4
|
+
<Filter Include="Source Files">
|
|
5
|
+
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
6
|
+
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
7
|
+
</Filter>
|
|
8
|
+
<Filter Include="Header Files">
|
|
9
|
+
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
10
|
+
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
|
11
|
+
</Filter>
|
|
12
|
+
<Filter Include="Resource Files">
|
|
13
|
+
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
14
|
+
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
15
|
+
</Filter>
|
|
16
|
+
</ItemGroup>
|
|
17
|
+
<ItemGroup>
|
|
18
|
+
<ClCompile Include="..\..\src\argon2.c">
|
|
19
|
+
<Filter>Source Files</Filter>
|
|
20
|
+
</ClCompile>
|
|
21
|
+
<ClCompile Include="..\..\src\core.c">
|
|
22
|
+
<Filter>Source Files</Filter>
|
|
23
|
+
</ClCompile>
|
|
24
|
+
<ClCompile Include="..\..\src\encoding.c">
|
|
25
|
+
<Filter>Source Files</Filter>
|
|
26
|
+
</ClCompile>
|
|
27
|
+
<ClCompile Include="..\..\src\ref.c">
|
|
28
|
+
<Filter>Source Files</Filter>
|
|
29
|
+
</ClCompile>
|
|
30
|
+
<ClCompile Include="..\..\src\test.c">
|
|
31
|
+
<Filter>Source Files</Filter>
|
|
32
|
+
</ClCompile>
|
|
33
|
+
<ClCompile Include="..\..\src\thread.c">
|
|
34
|
+
<Filter>Source Files</Filter>
|
|
35
|
+
</ClCompile>
|
|
36
|
+
<ClCompile Include="..\..\src\blake2\blake2b.c">
|
|
37
|
+
<Filter>Source Files</Filter>
|
|
38
|
+
</ClCompile>
|
|
39
|
+
</ItemGroup>
|
|
40
|
+
<ItemGroup>
|
|
41
|
+
<ClInclude Include="..\..\include\argon2.h">
|
|
42
|
+
<Filter>Header Files</Filter>
|
|
43
|
+
</ClInclude>
|
|
44
|
+
<ClInclude Include="..\..\src\blake2\blake2.h">
|
|
45
|
+
<Filter>Header Files</Filter>
|
|
46
|
+
</ClInclude>
|
|
47
|
+
<ClInclude Include="..\..\src\blake2\blake2-impl.h">
|
|
48
|
+
<Filter>Header Files</Filter>
|
|
49
|
+
</ClInclude>
|
|
50
|
+
<ClInclude Include="..\..\src\core.h">
|
|
51
|
+
<Filter>Header Files</Filter>
|
|
52
|
+
</ClInclude>
|
|
53
|
+
<ClInclude Include="..\..\src\encoding.h">
|
|
54
|
+
<Filter>Header Files</Filter>
|
|
55
|
+
</ClInclude>
|
|
56
|
+
<ClInclude Include="..\..\src\ref.h">
|
|
57
|
+
<Filter>Header Files</Filter>
|
|
58
|
+
</ClInclude>
|
|
59
|
+
<ClInclude Include="..\..\src\thread.h">
|
|
60
|
+
<Filter>Header Files</Filter>
|
|
61
|
+
</ClInclude>
|
|
62
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-opt.h">
|
|
63
|
+
<Filter>Header Files</Filter>
|
|
64
|
+
</ClInclude>
|
|
65
|
+
<ClInclude Include="..\..\src\blake2\blamka-round-ref.h">
|
|
66
|
+
<Filter>Header Files</Filter>
|
|
67
|
+
</ClInclude>
|
|
68
|
+
</ItemGroup>
|
|
69
|
+
</Project>
|
data/lib/passwordping.rb
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
require 'passwordping/errors'
|
|
2
|
+
require 'passwordping/constants'
|
|
3
|
+
require 'passwordping/password_type'
|
|
4
|
+
require 'passwordping/hashing'
|
|
5
|
+
require 'cgi'
|
|
6
|
+
require 'base64'
|
|
7
|
+
require 'rest-client'
|
|
8
|
+
require 'json'
|
|
9
|
+
require 'ostruct'
|
|
10
|
+
|
|
11
|
+
module PasswordPing
|
|
12
|
+
# This is the main entry point for accessing PasswordPing.
|
|
13
|
+
#
|
|
14
|
+
# Create this class with your API Key and Secret and then call the desired methods on the class
|
|
15
|
+
# to access the PasswordPing API.
|
|
16
|
+
class PasswordPing
|
|
17
|
+
def initialize(options = {})
|
|
18
|
+
@apiKey = options[:apiKey] || '';
|
|
19
|
+
raise PasswordPingFail, "No API key provided" if @apiKey == ''
|
|
20
|
+
@secret = options[:secret] || '';
|
|
21
|
+
raise PasswordPingFail, "No Secret provided" if @secret == ''
|
|
22
|
+
@baseURL = options[:baseURL] || "https://api.passwordping.com/v1"
|
|
23
|
+
@authString = calc_auth_string(@apiKey, @secret)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def check_credentials(username, password)
|
|
27
|
+
raise PasswordPingFail, "API key/Secret not set" if !@authString || @authString == ''
|
|
28
|
+
|
|
29
|
+
response = make_rest_call(@baseURL + Constants::ACCOUNTS_API_PATH + "?username=" + CGI.escape(username), "GET", nil)
|
|
30
|
+
|
|
31
|
+
if (response == "404")
|
|
32
|
+
return false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
account_response = JSON.parse(response)
|
|
36
|
+
hashes_required = account_response["passwordHashesRequired"]
|
|
37
|
+
|
|
38
|
+
bcrypt_count = 0
|
|
39
|
+
query_string = ""
|
|
40
|
+
|
|
41
|
+
for i in 0..hashes_required.length - 1 do
|
|
42
|
+
hash_spec = hashes_required[i]
|
|
43
|
+
|
|
44
|
+
# bcrypt gets far too expensive for good response time if there are many of them to calculate.
|
|
45
|
+
# some mostly garbage accounts have accumulated a number of them in our DB and if we happen to hit one it
|
|
46
|
+
# kills performance, so short circuit out after at most 2 BCrypt hashes
|
|
47
|
+
if (hash_spec["hashType"] != PasswordType::BCrypt || bcrypt_count <= 2)
|
|
48
|
+
if (hash_spec["hashType"] == PasswordType::BCrypt)
|
|
49
|
+
bcrypt_count = bcrypt_count + 1
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
if (hash_spec["hashType"] != nil)
|
|
53
|
+
credential_hash = calc_credential_hash(username, password, account_response["salt"], hash_spec);
|
|
54
|
+
|
|
55
|
+
if (credential_hash != nil)
|
|
56
|
+
if (query_string.length == 0)
|
|
57
|
+
query_string = query_string + "?hashes=" + CGI.escape(credential_hash);
|
|
58
|
+
else
|
|
59
|
+
query_string = query_string + "&hashes=" + CGI.escape(credential_hash);
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
if (query_string.length > 0)
|
|
67
|
+
creds_response = make_rest_call(
|
|
68
|
+
@baseURL + Constants::CREDENTIALS_API_PATH + query_string, "GET", nil)
|
|
69
|
+
return creds_response != "404"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
return false
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def check_password(password)
|
|
76
|
+
response = make_rest_call(
|
|
77
|
+
@baseURL + Constants::PASSWORDS_API_PATH +
|
|
78
|
+
"?md5=" + Hashing.md5(password) +
|
|
79
|
+
"&sha1=" + Hashing.sha1(password) +
|
|
80
|
+
"&sha256=" + Hashing.sha256(password),
|
|
81
|
+
"GET", nil)
|
|
82
|
+
|
|
83
|
+
return response != "404"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def get_exposures_for_user(username)
|
|
87
|
+
response = make_rest_call(@baseURL + Constants::EXPOSURES_API_PATH + "?username=" + CGI.escape(username),
|
|
88
|
+
"GET", nil)
|
|
89
|
+
|
|
90
|
+
if (response == "404")
|
|
91
|
+
# don't have this email in the DB - return empty response
|
|
92
|
+
return JSON.parse('{ "count": 0, "exposures": [] }', object_class: OpenStruct)
|
|
93
|
+
else
|
|
94
|
+
# deserialize response
|
|
95
|
+
return JSON.parse(response, object_class: OpenStruct)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def get_exposure_details(exposure_id)
|
|
100
|
+
response = make_rest_call(@baseURL + Constants::EXPOSURES_API_PATH + "?id=" + CGI.escape(exposure_id),
|
|
101
|
+
"GET", nil)
|
|
102
|
+
|
|
103
|
+
if (response != "404")
|
|
104
|
+
# deserialize response
|
|
105
|
+
return JSON.parse(response, object_class: OpenStruct)
|
|
106
|
+
else
|
|
107
|
+
return nil
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
private
|
|
112
|
+
def make_rest_call(rest_url, method, body)
|
|
113
|
+
begin
|
|
114
|
+
response = RestClient::Request.execute(method: method, url: rest_url,
|
|
115
|
+
headers: { content_type: :json, accept: :json, authorization: @authString })
|
|
116
|
+
return response.body
|
|
117
|
+
rescue RestClient::NotFound
|
|
118
|
+
return "404"
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def calc_credential_hash(username, password, salt, hash_spec)
|
|
123
|
+
password_hash = calc_password_hash(hash_spec["hashType"], password, hash_spec["salt"])
|
|
124
|
+
|
|
125
|
+
if (password_hash != nil)
|
|
126
|
+
argon2_hash = Hashing.argon2(username + "$" + password_hash, salt)
|
|
127
|
+
|
|
128
|
+
just_hash = argon2_hash[argon2_hash.rindex('$') + 1 .. argon2_hash.length]
|
|
129
|
+
return Base64.decode64(just_hash).unpack('H*')[0]
|
|
130
|
+
else
|
|
131
|
+
return nil
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def calc_password_hash(password_type, password, salt)
|
|
136
|
+
case password_type
|
|
137
|
+
when PasswordType::MD5
|
|
138
|
+
return Hashing.md5(password)
|
|
139
|
+
when PasswordType::SHA1
|
|
140
|
+
return Hashing.sha1(password)
|
|
141
|
+
when PasswordType::SHA256
|
|
142
|
+
return Hashing.sha256(password)
|
|
143
|
+
when PasswordType::IPBoard_MyBB
|
|
144
|
+
if (salt != nil && salt.length > 0)
|
|
145
|
+
return Hashing.mybb(password, salt)
|
|
146
|
+
end
|
|
147
|
+
when PasswordType::VBulletinPre3_8_5
|
|
148
|
+
if (salt != nil && salt.length > 0)
|
|
149
|
+
return Hashing.vbulletin(password, salt)
|
|
150
|
+
end
|
|
151
|
+
when PasswordType::VBulletinPost3_8_5
|
|
152
|
+
if (salt != nil && salt.length > 0)
|
|
153
|
+
return Hashing.vbulletin(password, salt)
|
|
154
|
+
end
|
|
155
|
+
when PasswordType::BCrypt
|
|
156
|
+
if (salt != nil && salt.length > 0)
|
|
157
|
+
return Hashing.bcrypt(password, salt)
|
|
158
|
+
end
|
|
159
|
+
when PasswordType::CRC32
|
|
160
|
+
return Hashing.crc32(password)
|
|
161
|
+
when PasswordType::PHPBB3
|
|
162
|
+
if (salt != nil && salt.length > 0)
|
|
163
|
+
return Hashing.phpbb3(password, salt)
|
|
164
|
+
end
|
|
165
|
+
when PasswordType::CustomAlgorithm1
|
|
166
|
+
if (salt != nil && salt.length > 0)
|
|
167
|
+
return Hashing.custom_algorithm1(password, salt)
|
|
168
|
+
end
|
|
169
|
+
when PasswordType::CustomAlgorithm2
|
|
170
|
+
if (salt != nil && salt.length > 0)
|
|
171
|
+
return Hashing.custom_algorithm2(password, salt)
|
|
172
|
+
end
|
|
173
|
+
when PasswordType::MD5Crypt
|
|
174
|
+
if (salt != nil && salt.length > 0)
|
|
175
|
+
return Hashing.md5crypt(password, salt)
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
return nil
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def calc_auth_string(apiKey, secret)
|
|
183
|
+
return "basic " + Base64.strict_encode64(apiKey + ":" + secret);
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|