Skip to content

Commit 77ac210

Browse files
committed
LuaSec 20120616 (unofficial) + patches
1 parent 908fc34 commit 77ac210

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3555
-267
lines changed

Makefile

+15-11
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,20 @@
22
LUAPATH=/usr/local/share/lua/5.1
33
LUACPATH=/usr/local/lib/lua/5.1
44

5-
# Edit the lines below to inform new path, if necessary
6-
#
7-
#INCDIR=-I/usr/local/lua-5.1/include -I/usr/local/openssl-0.9.8/include
8-
#LIBDIR=-L/usr/local/openssl-0.9.8/lib -R/usr/local/openssl-0.9.8/lib
5+
# Compile with build-in LuaSocket's help files.
6+
# Comment this lines if you will link with non-internal LuaSocket's help files
7+
# and edit INCDIR and LIBDIR properly.
8+
EXTRA=luasocket
9+
DEFS=-DWITH_LUASOCKET
10+
11+
# Edit the lines below to inform new path, if necessary.
12+
# Path below points to internal LuaSocket's help files.
13+
INCDIR=-I.
14+
LIBDIR=-L./luasocket
915

1016
# For Mac OS X: set the system version
1117
MACOSX_VERSION=10.4
1218

13-
DEFS=-DBUFFER_DEBUG
14-
1519
#----------------------
1620
# Do not edit this part
1721

@@ -26,25 +30,25 @@ none:
2630
@echo " * macosx"
2731

2832
install:
29-
@cd src ; $(MAKE) LUACPATH="$(LUACPATH)" LUAPATH="$(LUAPATH)" install
33+
@cd src && $(MAKE) LUACPATH="$(LUACPATH)" LUAPATH="$(LUAPATH)" install
3034

3135
linux:
3236
@echo "---------------------"
3337
@echo "** Build for Linux **"
3438
@echo "---------------------"
35-
@cd src ; $(MAKE) INCDIR="$(INCDIR)" LIBDIR="$(LIBDIR)" DEFS="$(DEFS)" $@
39+
@cd src && $(MAKE) INCDIR="$(INCDIR)" LIBDIR="$(LIBDIR)" DEFS="$(DEFS)" EXTRA="$(EXTRA)" $@
3640

3741
bsd:
3842
@echo "-------------------"
3943
@echo "** Build for BSD **"
4044
@echo "-------------------"
41-
@cd src ; $(MAKE) INCDIR="$(INCDIR)" LIBDIR="$(LIBDIR)" DEFS="$(DEFS)" $@
45+
@cd src && $(MAKE) INCDIR="$(INCDIR)" LIBDIR="$(LIBDIR)" DEFS="$(DEFS)" EXTRA="$(EXTRA)" $@
4246

4347
macosx:
4448
@echo "------------------------------"
4549
@echo "** Build for Mac OS X $(MACOSX_VERSION) **"
4650
@echo "------------------------------"
47-
@cd src ; $(MAKE) INCDIR="$(INCDIR)" LIBDIR="$(LIBDIR)" DEFS="$(DEFS)" MACVER="$(MACOSX_VERSION)" $@
51+
@cd src && $(MAKE) INCDIR="$(INCDIR)" LIBDIR="$(LIBDIR)" MACVER="$(MACOSX_VERSION)" DEFS="$(DEFS)" EXTRA="$(EXTRA)" $@
4852

4953
clean:
50-
@cd src ; $(MAKE) clean
54+
@cd src && $(MAKE) clean

luasec.sln

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
Microsoft Visual Studio Solution File, Format Version 10.00
2-
# Visual C++ Express 2008
3-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luasec", "luasec.vcproj", "{A629932F-8819-4C0B-8835-CBF1FEED6376}"
1+
Microsoft Visual Studio Solution File, Format Version 11.00
2+
# Visual C++ Express 2010
3+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luasec", "luasec.vcxproj", "{A629932F-8819-4C0B-8835-CBF1FEED6376}"
44
EndProject
55
Global
66
GlobalSection(SolutionConfigurationPlatforms) = preSolution

luasec.suo

5 KB
Binary file not shown.

luasec.vcxproj

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="4.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="Release|Win32">
9+
<Configuration>Release</Configuration>
10+
<Platform>Win32</Platform>
11+
</ProjectConfiguration>
12+
</ItemGroup>
13+
<PropertyGroup Label="Globals">
14+
<ProjectGuid>{A629932F-8819-4C0B-8835-CBF1FEED6376}</ProjectGuid>
15+
<Keyword>Win32Proj</Keyword>
16+
</PropertyGroup>
17+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
18+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
19+
<ConfigurationType>DynamicLibrary</ConfigurationType>
20+
<CharacterSet>MultiByte</CharacterSet>
21+
</PropertyGroup>
22+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
23+
<ConfigurationType>DynamicLibrary</ConfigurationType>
24+
<CharacterSet>MultiByte</CharacterSet>
25+
</PropertyGroup>
26+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
27+
<ImportGroup Label="ExtensionSettings">
28+
</ImportGroup>
29+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
30+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
31+
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
32+
</ImportGroup>
33+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
34+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
35+
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
36+
</ImportGroup>
37+
<PropertyGroup Label="UserMacros" />
38+
<PropertyGroup>
39+
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
40+
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
41+
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
42+
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
43+
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
44+
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
45+
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
46+
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ssl</TargetName>
47+
</PropertyGroup>
48+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
49+
<ClCompile>
50+
<Optimization>Disabled</Optimization>
51+
<AdditionalIncludeDirectories>C:\devel\openssl\include;C:\devel\lua-dll9\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
52+
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LUASEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
53+
<MinimalRebuild>true</MinimalRebuild>
54+
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
55+
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
56+
<PrecompiledHeader>
57+
</PrecompiledHeader>
58+
<WarningLevel>Level3</WarningLevel>
59+
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
60+
</ClCompile>
61+
<Link>
62+
<AdditionalDependencies>ws2_32.lib;libeay32MDd.lib;ssleay32MDd.lib;lua5.1.lib;%(AdditionalDependencies)</AdditionalDependencies>
63+
<OutputFile>$(OutDir)ssl.dll</OutputFile>
64+
<AdditionalLibraryDirectories>C:\devel\openssl\lib\VC;C:\devel\lua-dll9;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
65+
<GenerateDebugInformation>true</GenerateDebugInformation>
66+
<ProgramDatabaseFile>$(OutDir)luasec.pdb</ProgramDatabaseFile>
67+
<SubSystem>Windows</SubSystem>
68+
<RandomizedBaseAddress>false</RandomizedBaseAddress>
69+
<DataExecutionPrevention>
70+
</DataExecutionPrevention>
71+
<ImportLibrary>$(OutDir)ssl.lib</ImportLibrary>
72+
<TargetMachine>MachineX86</TargetMachine>
73+
</Link>
74+
</ItemDefinitionGroup>
75+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
76+
<ClCompile>
77+
<AdditionalIncludeDirectories>C:\devel\openssl\include;C:\devel\lua5.2\include;.\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
78+
<PreprocessorDefinitions>WIN32;_WIN32;NDEBUG;_WINDOWS;_USRDLL;LUASOCKET_DEBUG;WITH_LUASOCKET;%(PreprocessorDefinitions)</PreprocessorDefinitions>
79+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
80+
<PrecompiledHeader>
81+
</PrecompiledHeader>
82+
<WarningLevel>Level3</WarningLevel>
83+
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
84+
</ClCompile>
85+
<Link>
86+
<AdditionalDependencies>ws2_32.lib;libeay32MD.lib;ssleay32MD.lib;lua52.lib;%(AdditionalDependencies)</AdditionalDependencies>
87+
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
88+
<AdditionalLibraryDirectories>C:\devel\openssl\lib\VC;C:\devel\lua5.2\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
89+
<GenerateDebugInformation>true</GenerateDebugInformation>
90+
<SubSystem>Windows</SubSystem>
91+
<OptimizeReferences>true</OptimizeReferences>
92+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
93+
<RandomizedBaseAddress>false</RandomizedBaseAddress>
94+
<DataExecutionPrevention>
95+
</DataExecutionPrevention>
96+
<ImportLibrary>$(OutDir)ssl.lib</ImportLibrary>
97+
<TargetMachine>MachineX86</TargetMachine>
98+
</Link>
99+
</ItemDefinitionGroup>
100+
<ItemGroup>
101+
<ClCompile Include="src\context.c" />
102+
<ClCompile Include="src\luasocket\buffer.c" />
103+
<ClCompile Include="src\luasocket\io.c" />
104+
<ClCompile Include="src\luasocket\timeout.c" />
105+
<ClCompile Include="src\luasocket\wsocket.c" />
106+
<ClCompile Include="src\ssl.c" />
107+
<ClCompile Include="src\x509.c" />
108+
</ItemGroup>
109+
<ItemGroup>
110+
<ClInclude Include="src\config.h" />
111+
<ClInclude Include="src\context.h" />
112+
<ClInclude Include="src\ec.h" />
113+
<ClInclude Include="src\luasocket\buffer.h" />
114+
<ClInclude Include="src\luasocket\io.h" />
115+
<ClInclude Include="src\luasocket\socket.h" />
116+
<ClInclude Include="src\luasocket\timeout.h" />
117+
<ClInclude Include="src\luasocket\wsocket.h" />
118+
<ClInclude Include="src\options.h" />
119+
<ClInclude Include="src\ssl.h" />
120+
<ClInclude Include="src\x509.h" />
121+
</ItemGroup>
122+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
123+
<ImportGroup Label="ExtensionTargets">
124+
</ImportGroup>
125+
</Project>

luasec.vcxproj.filters

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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;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;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</Extensions>
15+
</Filter>
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ClCompile Include="src\x509.c">
19+
<Filter>Source Files</Filter>
20+
</ClCompile>
21+
<ClCompile Include="src\context.c">
22+
<Filter>Source Files</Filter>
23+
</ClCompile>
24+
<ClCompile Include="src\ssl.c">
25+
<Filter>Source Files</Filter>
26+
</ClCompile>
27+
<ClCompile Include="src\luasocket\wsocket.c">
28+
<Filter>Source Files</Filter>
29+
</ClCompile>
30+
<ClCompile Include="src\luasocket\buffer.c">
31+
<Filter>Source Files</Filter>
32+
</ClCompile>
33+
<ClCompile Include="src\luasocket\io.c">
34+
<Filter>Source Files</Filter>
35+
</ClCompile>
36+
<ClCompile Include="src\luasocket\timeout.c">
37+
<Filter>Source Files</Filter>
38+
</ClCompile>
39+
</ItemGroup>
40+
<ItemGroup>
41+
<ClInclude Include="src\x509.h">
42+
<Filter>Header Files</Filter>
43+
</ClInclude>
44+
<ClInclude Include="src\config.h">
45+
<Filter>Header Files</Filter>
46+
</ClInclude>
47+
<ClInclude Include="src\context.h">
48+
<Filter>Header Files</Filter>
49+
</ClInclude>
50+
<ClInclude Include="src\ec.h">
51+
<Filter>Header Files</Filter>
52+
</ClInclude>
53+
<ClInclude Include="src\options.h">
54+
<Filter>Header Files</Filter>
55+
</ClInclude>
56+
<ClInclude Include="src\ssl.h">
57+
<Filter>Header Files</Filter>
58+
</ClInclude>
59+
<ClInclude Include="src\luasocket\wsocket.h">
60+
<Filter>Header Files</Filter>
61+
</ClInclude>
62+
<ClInclude Include="src\luasocket\buffer.h">
63+
<Filter>Header Files</Filter>
64+
</ClInclude>
65+
<ClInclude Include="src\luasocket\io.h">
66+
<Filter>Header Files</Filter>
67+
</ClInclude>
68+
<ClInclude Include="src\luasocket\socket.h">
69+
<Filter>Header Files</Filter>
70+
</ClInclude>
71+
<ClInclude Include="src\luasocket\timeout.h">
72+
<Filter>Header Files</Filter>
73+
</ClInclude>
74+
</ItemGroup>
75+
</Project>

samples/certs/serverA.cnf

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ basicConstraints=CA:FALSE
172172
# the certificate can be used for anything *except* object signing.
173173

174174
# This is OK for an SSL server.
175-
# nsCertType = server
175+
nsCertType = server
176176

177177
# For an object signing certificate this would be used.
178178
# nsCertType = objsign

samples/certs/serverB.cnf

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ basicConstraints=CA:FALSE
172172
# the certificate can be used for anything *except* object signing.
173173

174174
# This is OK for an SSL server.
175-
# nsCertType = server
175+
nsCertType = server
176176

177177
# For an object signing certificate this would be used.
178178
# nsCertType = objsign

samples/chain/client.lua

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
--
2+
-- Public domain
3+
--
4+
local socket = require("socket")
5+
local ssl = require("ssl")
6+
local util = require("util")
7+
8+
local params = {
9+
mode = "client",
10+
protocol = "tlsv1",
11+
key = "../certs/clientAkey.pem",
12+
certificate = "../certs/clientA.pem",
13+
cafile = "../certs/rootA.pem",
14+
verify = {"peer", "fail_if_no_peer_cert"},
15+
options = {"all", "no_sslv2"},
16+
}
17+
18+
local conn = socket.tcp()
19+
conn:connect("127.0.0.1", 8888)
20+
21+
conn = assert( ssl.wrap(conn, params) )
22+
assert(conn:dohandshake())
23+
24+
util.show( conn:getpeercertificate() )
25+
26+
print("----------------------------------------------------------------------")
27+
28+
for k, cert in ipairs( conn:getpeerchain() ) do
29+
util.show(cert)
30+
end
31+
32+
local cert = conn:getpeercertificate()
33+
print( cert )
34+
print( cert:pem() )
35+
36+
conn:close()

samples/chain/server.lua

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
--
2+
-- Public domain
3+
--
4+
local socket = require("socket")
5+
local ssl = require("ssl")
6+
local util = require("util")
7+
8+
local params = {
9+
mode = "server",
10+
protocol = "tlsv1",
11+
key = "../certs/serverAkey.pem",
12+
certificate = "../certs/serverA.pem",
13+
cafile = "../certs/rootA.pem",
14+
verify = {"peer", "fail_if_no_peer_cert"},
15+
options = {"all", "no_sslv2"},
16+
}
17+
18+
local ctx = assert(ssl.newcontext(params))
19+
20+
local server = socket.tcp()
21+
server:setoption('reuseaddr', true)
22+
assert( server:bind("127.0.0.1", 8888) )
23+
server:listen()
24+
25+
local conn = server:accept()
26+
27+
conn = assert( ssl.wrap(conn, ctx) )
28+
assert( conn:dohandshake() )
29+
30+
util.show( conn:getpeercertificate() )
31+
32+
print("----------------------------------------------------------------------")
33+
34+
for k, cert in ipairs( conn:getpeerchain() ) do
35+
util.show(cert)
36+
end
37+
38+
local f = io.open(params.certificate)
39+
local str = f:read("*a")
40+
f:close()
41+
42+
util.show( ssl.loadcertificate(str) )
43+
44+
print("----------------------------------------------------------------------")
45+
local cert = conn:getpeercertificate()
46+
print( cert )
47+
print( cert:digest() )
48+
print( cert:digest("sha1") )
49+
print( cert:digest("sha256") )
50+
print( cert:digest("sha512") )
51+
52+
conn:close()
53+
server:close()

0 commit comments

Comments
 (0)