Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions wish/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,43 @@ FetchContent_Declare(
GIT_REPOSITORY https://github.com/libevent/libevent.git
GIT_TAG master
)
# Disable OpenSSL and other heavy features for libevent to keep build fast/simple if possible

FetchContent_Declare(
boringssl
GIT_REPOSITORY https://boringssl.googlesource.com/boringssl
GIT_TAG main
)

# Disable OpenSSL and Mbed TLS. We use BoringSSL instead.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

set(EVENT__DISABLE_OPENSSL ON CACHE BOOL "" FORCE)
set(EVENT__DISABLE_MBEDTLS ON CACHE BOOL "" FORCE)

# Exclude tests, sample files, etc. that we don't need.
set(EVENT__DISABLE_BENCHMARKS ON CACHE BOOL "" FORCE)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removing benchmark code, too

set(EVENT__DISABLE_TESTS ON CACHE BOOL "" FORCE)
set(EVENT__DISABLE_REGRESS ON CACHE BOOL "" FORCE)
set(EVENT__DISABLE_SAMPLES ON CACHE BOOL "" FORCE)

FetchContent_MakeAvailable(wslay libevent)
FetchContent_MakeAvailable(wslay libevent boringssl)

include_directories(${wslay_SOURCE_DIR}/lib/includes)
include_directories(${libevent_SOURCE_DIR}/include)
include_directories(${libevent_BINARY_DIR}/include)
include_directories(${boringssl_SOURCE_DIR}/include)
include_directories(src)

# We will compile libevent's bufferevent_openssl.c inside our library
# since we disabled it in libevent's own build.
add_library(wish_handler
src/wish_handler.cc
src/wish_handler.h
${libevent_SOURCE_DIR}/bufferevent_openssl.c
${libevent_SOURCE_DIR}/bufferevent_ssl.c
src/tls_context.cc
src/tls_context.h
)
target_link_libraries(wish_handler wslay event)
# BoringSSL targets: ssl and crypto
target_link_libraries(wish_handler wslay event ssl crypto)

add_executable(wish-server examples/server.cc)
target_link_libraries(wish-server wish_handler)
Expand Down
19 changes: 19 additions & 0 deletions wish/cpp/certs/ca.crt
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

certificates and keys for testing generated by using openssl

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDAzCCAeugAwIBAgIULUllQ/GTW3bJoBxzDeGx+PnANfgwDQYJKoZIhvcNAQEL
BQAwETEPMA0GA1UEAwwGVGVzdENBMB4XDTI2MDIyNTA0NTIwM1oXDTI3MDIyNTA0
NTIwM1owETEPMA0GA1UEAwwGVGVzdENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEA2WlzLjr4zzS4mNp37NUUl/nJrC17QmNt7fsNszR7u8PuY8Opw9F6
BBMsP0V4TT3Vht8BBgFJcOrC6cbMURxk2b+Qflzbn4WNKwx014BGIFwDoG3x3LT7
3cTdVweHm9x6HX23XF7NZr//TOJ2Dkkix8jmvxjinn1ebfJOC+oMDYeUkO7UpolB
2KF+b+oPurVL8690Db6iVb3X4goCW+vE9VdDBRrujo7zSztg8TVGilIuv3W2WKzF
hzd1EXt8MwSLR5HXWpoVm6wuIt/wiylkvzayc3yUCYMS+Z7dCZibhLdYIkITzCb/
+k8p9B+nXY6lHKfeChryqOOcsgp8sliBmQIDAQABo1MwUTAdBgNVHQ4EFgQUulOC
wCKuUv1iwoNFir55WHgiunwwHwYDVR0jBBgwFoAUulOCwCKuUv1iwoNFir55WHgi
unwwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAjkYV7MyJHlJS
lzHXUSTKQxwchllofsNPJ6BXEeNKPvfOTTe+KJKjSyldvzmQmVQpoqBpi5NBPNuC
yYesF7A002MSlH6udsBYiDlMr0z0oj0fdJZkXSxQgMKtigw7Qr60uNhT5Cb3Sn95
PHAOfUnwH2iQ8omd7OnCOs/80xp//cwMKlOuMbq7X4YOQxRP04RK8AU0fyrrpuj6
A+opTHhTQBr81OngLf4DKl9L7sS8fmHmo31pGHALP2+goDVB5YT6m4Hysp9PeVdc
zKlGbV/OZRNaEqqZdhkr6gUiV6TxLb3eaAN55AlTsVMS2CPGljsf9gyXnX0HdeOO
R80+cmIbmg==
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions wish/cpp/certs/ca.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDZaXMuOvjPNLiY
2nfs1RSX+cmsLXtCY23t+w2zNHu7w+5jw6nD0XoEEyw/RXhNPdWG3wEGAUlw6sLp
xsxRHGTZv5B+XNufhY0rDHTXgEYgXAOgbfHctPvdxN1XB4eb3HodfbdcXs1mv/9M
4nYOSSLHyOa/GOKefV5t8k4L6gwNh5SQ7tSmiUHYoX5v6g+6tUvzr3QNvqJVvdfi
CgJb68T1V0MFGu6OjvNLO2DxNUaKUi6/dbZYrMWHN3URe3wzBItHkddamhWbrC4i
3/CLKWS/NrJzfJQJgxL5nt0JmJuEt1giQhPMJv/6Tyn0H6ddjqUcp94KGvKo45yy
CnyyWIGZAgMBAAECggEAFfW7YTjqawZ+m0zc1maG6htcQhiFddUUdFhaf8Z+NX7i
wD+yEPICjrEPk/P8xOOJIvJ5OF2uqPnDdojCmDJDowVhD0xqkBQ1qDqdvisqGihl
IuIcDxCWTKYO+9SKP2VfjcVGHS3DtjxQKZhJt6NuQIsDuJtnP343CKiz9qrdLQv8
JqqbIETgJD2i/JOhmVFB00Xx1sGSGUe7LpDGtZ0S4Yv6deoRM1OFZ8wLJyf1rmlh
c0FJqRGyKAsSERYYBUnKsVB8MOMDgucmrFkSowslPQW1F3TeX1Jq3fS3DX0ie7pt
+CO15FhKc7EEKEsgtgRt4o49nXTscmaQwkM/vDh+sQKBgQD7EEdzYeBhYWnt+keb
/h4tAkKiRnQGYXMJbIhvsGHx+eFo+eV/2ntZAQq1MOVpVF6p4aM41Z4r3+GiurLe
ymt7mTrLYpkNQ02tkL6cMqEF8EghuAMHSTPY29/ZiiihU5bckhIfmCXX9YEjNskA
vWEO5Ed73GxiL02Zu8+mBpEY6QKBgQDdr8lAPJnlABu5vAxrLqqYySCNW77ihMpU
7/SuiwDnK3CDvCGaclL4C3R7HMKOCa7SbK9nGgllEs2hfTQrcbP0Qz47qYdhnXdr
S8KcSZMgAH0L3sA3dKO9QsbvumMRBN+8kxN0o3PkYqpE+L0Zmq+ZYd9awB2Cy98q
MoGNUIa1MQKBgQCrA4a3+Iafrnw6Zw4aGrmxTOXYpYboxb5XP/+bnJjK+7voBrim
I0t77/K8QycxXQ/yRckpsJDCMAkBEI1Apr8Z/OEIowu/9gVWYc8ElJQMeISZuz8M
2ncfk33iL3LHmSmc6z6/GKNGfGtPckTuZRFU1HhAzX9iTfhc7Ipf+/8f6QKBgBK4
K0hPVbduoOi4JlxOnn00TplhK+c4y1UMxh6PAk6C7odRNY0zJipn3TggH5Wa37ZJ
Ey6jljOAuPhv+B3LBiUUIIctM49cmp7m0NIdrFzBbc24y4ZjRQhQQTgxBviC7tmf
mb75pmmco0AbuOwWkclj6FZjbpqC2J9ZkHL8X8OhAoGAGCky9qOEZSIGwOFGwnM/
Y1a1xI0kZSYfA7AnacqAXUQ0tjMMTB1O8t+qKFLCRWVgnphWKpJ5WCGabZ0uFywM
O7MS5FFhmkNFdlS4ajJVscY4yWtPbb9SGHW572zqYEaI0kUbvSDXqqpUBh+9fvLk
URpPRg1F1oO2Lgox3tYamCw=
-----END PRIVATE KEY-----
1 change: 1 addition & 0 deletions wish/cpp/certs/ca.srl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4881D8895D13397DC3319D6AFCE4BD764D28B887
18 changes: 18 additions & 0 deletions wish/cpp/certs/client.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC9jCCAd6gAwIBAgIUSIHYiV0TOX3DMZ1q/OS9dk0ouIcwDQYJKoZIhvcNAQEL
BQAwETEPMA0GA1UEAwwGVGVzdENBMB4XDTI2MDIyNTA0NTIwM1oXDTI3MDIyNTA0
NTIwM1owFTETMBEGA1UEAwwKVGVzdENsaWVudDCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAL7UV/B4sfiqkHPY8BrwprfXc6zuvCKQmK9wSVSHB12dFNnN
/05B05cTjCtwx+k/OvqOAqtfm4Fj5h5Gzv0VYcJvOkoOGtG/+Fwm3J2yCcjQLuhe
osgONk+5PG5emSbtjkmt1NWP8gdzydm93eCIp7CdQDNEqQHPsxLgLwUeiSXWNIw2
TKZ/9/jEavkI7T/ex3Wowpc8qk2sQdXHOQSDhERZ2xKbrenujTfu3xjis/ajhdg5
P78qiVmK2BVtxp+m/tIIrn5vJJHQXiO3QObWUxKGJqiDgDn3YX3P23cRcM6jiD/7
jPH9qi9EMatnznUqdG9W9+n9VouE3bDbo4yMTesCAwEAAaNCMEAwHQYDVR0OBBYE
FLEyhA7GYfN1bFgtCg2ZaMrzPJMIMB8GA1UdIwQYMBaAFLpTgsAirlL9YsKDRYq+
eVh4Irp8MA0GCSqGSIb3DQEBCwUAA4IBAQAdWTsNALb5EC4zdUSeLOOPUMIuAyuE
kce1gIqrJz6+dFdm4VFQzd+t69q2VDHaMjoJYUGaFj9LRngtXVZVhNktk27KtIst
62TzdvOwGZ0SxieI9ZNyaPw4d55TNH5JLroA0P7Xs/lSZxBiidJUPSGEAEQBi7Kn
nHJUk2NzVnglsT+s32B/i2+w/Kab3U1GLZxqZcf2rWBgv/gKvSXmKY1tsoRQAcFs
ZLVBo+3WPmbOa6uh6bIZ/mCLtpZ9fn+Sg5uJsjhSOIrVLReY5sncTuhuX/XGY2Mx
LhJvlTsy9arpWQCGAbKkllQglzSYPrCO4ne9wiEtHZe3kFGEZPSJ9pYz
-----END CERTIFICATE-----
15 changes: 15 additions & 0 deletions wish/cpp/certs/client.csr
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICWjCCAUICAQAwFTETMBEGA1UEAwwKVGVzdENsaWVudDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAL7UV/B4sfiqkHPY8BrwprfXc6zuvCKQmK9wSVSH
B12dFNnN/05B05cTjCtwx+k/OvqOAqtfm4Fj5h5Gzv0VYcJvOkoOGtG/+Fwm3J2y
CcjQLuheosgONk+5PG5emSbtjkmt1NWP8gdzydm93eCIp7CdQDNEqQHPsxLgLwUe
iSXWNIw2TKZ/9/jEavkI7T/ex3Wowpc8qk2sQdXHOQSDhERZ2xKbrenujTfu3xji
s/ajhdg5P78qiVmK2BVtxp+m/tIIrn5vJJHQXiO3QObWUxKGJqiDgDn3YX3P23cR
cM6jiD/7jPH9qi9EMatnznUqdG9W9+n9VouE3bDbo4yMTesCAwEAAaAAMA0GCSqG
SIb3DQEBCwUAA4IBAQCTBMs1gqu0wKetW81iJ+7Px37NONLgSXzXUmAU0OYID5w4
7UH9EhgfSbiOWxagJeTngiDIUDl4ZqpGMKqszY2BYpEQKm/Cg1pVmsfIBWWoOa1o
dlQngoxMP1M8TE5KE0/I855l8vWoHoNGG6YCIlkvmkUReolYrT2uksry5ph2a8lG
xu16uoiHuukKalw9p04tfopYgEsstmgIigNR/uEvF/CMhtFOmwM0UCkuqYJAy5Mi
m56I3fZqtCqgOj8i5JEgOPtFYV7mzLEkkmoFXKpBSDjutzf49ph+AVaQsA2kMif8
5lO9LFWelCH5xQYBYXMQfpcp8xB+/qsRvki5fNNG
-----END CERTIFICATE REQUEST-----
28 changes: 28 additions & 0 deletions wish/cpp/certs/client.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC+1FfweLH4qpBz
2PAa8Ka313Os7rwikJivcElUhwddnRTZzf9OQdOXE4wrcMfpPzr6jgKrX5uBY+Ye
Rs79FWHCbzpKDhrRv/hcJtydsgnI0C7oXqLIDjZPuTxuXpkm7Y5JrdTVj/IHc8nZ
vd3giKewnUAzRKkBz7MS4C8FHokl1jSMNkymf/f4xGr5CO0/3sd1qMKXPKpNrEHV
xzkEg4REWdsSm63p7o037t8Y4rP2o4XYOT+/KolZitgVbcafpv7SCK5+bySR0F4j
t0Dm1lMShiaog4A592F9z9t3EXDOo4g/+4zx/aovRDGrZ851KnRvVvfp/VaLhN2w
26OMjE3rAgMBAAECggEANnq82GQ8uvdG4ivu8GH/1sBlv9swTtXlIUD3TnB2Q92S
lFPhLWBRnfHwtH4wNIDev6VHUdGrvZbdnYstkMdH75B9naLFOViK+RQHK+YmMPRu
T9yksGSOUNhbTk8nfhuX4aUE/CtqN4Jw//7alz2sUhmyuHBDp8a6IwtpoRaEpQ4x
8gNgN8QLFCGGMypK//bJCIFaZeWwwXqvdzhtWjsJ98g4/cHsmY5TqAjrn/nsh+es
LMHAQP867NIPn9kzhXC8mho1bjdl13q/Fc43kvzdXvi//BviHf4hy3Iq6MZVDkSl
9ii+46Hz0Hm+hEv/z9eaA9P7DHeW/Eu5xmq9Thp1MQKBgQDpeuQcuiUe3c08nMyG
qoAc6CLH02y1ZnK8kTuKZ9xfKcnlBdmO9kEby2JjL2tB9unReUkOsJsJ4P+eyQ0m
eldUsz+yOkKZUL8wfWumO3aorN8OVKpXeoC5XgWPsBh8enQOqM2h9Z0kkaQxpH54
27tJTCNcs/as1H147THueVyrtwKBgQDRPFIhGmgbyqQRpRoxMNVjtuTegc5/U7UW
k9LZyPOZo+en0D3cWjqhTtKLD1iSErbGggxyJej0kLGVYgoNGsWperh2nA8nMhAh
du+cg4Yw0QEO5vbt4yvl+ZbRR0UrGv8eJyMfKnLBLv6BYYmVJKX0jVLDWXR8gmxs
pLu+pCRXbQKBgEBPvW28SGVMKzA68ItXg5pyxsHMFvGQmqIeTww8t5Lu69HN3rNm
WWDSkPNJKH4vCRDOG7WUJ+B8vWx7bMfggxWtmin5qkaY21D7+x762iB0HazQ3Wrj
L3nf0CBYHSaMhFNVY+7svLBJ/bQ+3ydjPx9dfZAXcicBEN6yV0Kc403ZAoGBALY5
17l22xbhPFUVuqL+ycnnPpq+6I4h5AP+yFLeXbIAer+/cDDZ8FgOYvWzbssBO2fV
WWuMsr9UySS11tUk7OM2uzKppdTYGA5dHD/umE8pp8dHxeTWxaOr5PrtHEN3Zprn
MQJyoLC48fTSctWOrm43Ks5xuS67FBzmt5BIOlJdAoGAGlDOnrIq3kBsCzjltUMi
NKcC9Zv2U45lxLpFXDn88EJjK822P41nFEPOrFxz92rU+m6tLh+v9oxzeVyTXz0t
2wFOpUmyqp3dx+ao0MmZ2osnTHDy4CZlbDsq2Zgutp6FJIuwrnGqQvrm5dzLi7K1
EUN76mURJTkwNGavgFB+QUw=
-----END PRIVATE KEY-----
18 changes: 18 additions & 0 deletions wish/cpp/certs/server.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC9TCCAd2gAwIBAgIUSIHYiV0TOX3DMZ1q/OS9dk0ouIYwDQYJKoZIhvcNAQEL
BQAwETEPMA0GA1UEAwwGVGVzdENBMB4XDTI2MDIyNTA0NTIwM1oXDTI3MDIyNTA0
NTIwM1owFDESMBAGA1UEAwwJMTI3LjAuMC4xMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAx+Nj4qUS5OHJFk+ododRkifW2Av/rHj+w90e8riOTYYl4JfS
kymur/ytAgg6cmXg0t9BNwfogOxPPdSI7pHEW9uo7Ckt6HsvkjNiEgIKhpoM6cee
RovXvUMfZz87oaTgWJLAVIuy9KDAbiH2S6YsWBeHVYW6gG6/+DzOp4EtR2mIatL9
oNYhymbT92Wh94kEwS08rYkDkpely36C1pY4JrQSbi56FTTly796MHXVdbKwJ/iA
HWCVrwLJO2KR2alLlanGeDzI80PvOis2VoLk73Rip1KtN82uVQaGLj/Ue87ra6Er
/UAIh7xeNLBwJy+ms/eUN+Qb1RHxLxoYUVlffQIDAQABo0IwQDAdBgNVHQ4EFgQU
ELOIoZF2Uon8O0zVTay9IbotxZ8wHwYDVR0jBBgwFoAUulOCwCKuUv1iwoNFir55
WHgiunwwDQYJKoZIhvcNAQELBQADggEBABjGHfP9mwhYM/7cQX+zPWrgx/SdoiCB
ddNytI7P3zodQLyiArwn03gmO1XG4J/7dXfdxL64Y8Ome41XfgnqOoSFcT3GAaWD
l1BfWxbwe7QwoZLNrV4oUjX9BzjAIOYVcxuHc9d46aiX3q3USf9oZRVkimEMlXVI
MpRaGEmJ83mjyzdk/ECKmOilFMWB5fgOwTiKI2vt0rL0Q3UJ/jxz+AzaX0flGvym
hTiwFTUmR4y+VZDb0qvQX/gY+EqJwXiNZN8QO7BmKdPxhdtFuxbkdMjbVOR9IkgJ
X1MiZsrMdQTAohJ4nCLgKdiCXdOhSWJWyKjKl3orn52zHHVgBqhwZtU=
-----END CERTIFICATE-----
15 changes: 15 additions & 0 deletions wish/cpp/certs/server.csr
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICWTCCAUECAQAwFDESMBAGA1UEAwwJMTI3LjAuMC4xMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAx+Nj4qUS5OHJFk+ododRkifW2Av/rHj+w90e8riO
TYYl4JfSkymur/ytAgg6cmXg0t9BNwfogOxPPdSI7pHEW9uo7Ckt6HsvkjNiEgIK
hpoM6ceeRovXvUMfZz87oaTgWJLAVIuy9KDAbiH2S6YsWBeHVYW6gG6/+DzOp4Et
R2mIatL9oNYhymbT92Wh94kEwS08rYkDkpely36C1pY4JrQSbi56FTTly796MHXV
dbKwJ/iAHWCVrwLJO2KR2alLlanGeDzI80PvOis2VoLk73Rip1KtN82uVQaGLj/U
e87ra6Er/UAIh7xeNLBwJy+ms/eUN+Qb1RHxLxoYUVlffQIDAQABoAAwDQYJKoZI
hvcNAQELBQADggEBABgXHLjpfS5F+ELiq+ouMMFbgZvcopB5+aO6serFg+bCcFPe
EfEwbmggF6vUnfXg3YOV8IHw+sYmaN02f1xydRtupeIbyLB2drsmS/5Nd8iwcO0w
GQlLIhY0L8a85sjNfoy2qn4GFkAo7YRFUkOU0PcE7LWNQqUMccovUtCddI2chEuB
XAfE4LNQd7z6o//Fh4AReOY+Z98qMU9jJe+Of9QPqzXdI+27gLKj9aGrKl4LuqE7
vVjkjCCuWn7VoEv5Re5X/sa37K3DxWtr6ee1q2DnDqBLCxZh7cgHNjWx8MLZCQtP
JhFJfpScoBTVlM8rc7KmYD9yycoFgacZ+qTCPDE=
-----END CERTIFICATE REQUEST-----
28 changes: 28 additions & 0 deletions wish/cpp/certs/server.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDH42PipRLk4ckW
T6h2h1GSJ9bYC/+seP7D3R7yuI5NhiXgl9KTKa6v/K0CCDpyZeDS30E3B+iA7E89
1IjukcRb26jsKS3oey+SM2ISAgqGmgzpx55Gi9e9Qx9nPzuhpOBYksBUi7L0oMBu
IfZLpixYF4dVhbqAbr/4PM6ngS1HaYhq0v2g1iHKZtP3ZaH3iQTBLTytiQOSl6XL
foLWljgmtBJuLnoVNOXLv3owddV1srAn+IAdYJWvAsk7YpHZqUuVqcZ4PMjzQ+86
KzZWguTvdGKnUq03za5VBoYuP9R7zutroSv9QAiHvF40sHAnL6az95Q35BvVEfEv
GhhRWV99AgMBAAECggEAAtT5Zs4g6OY8A5loURmUscXnuNLesfJa5ap91EGCHp4O
blKoVJZsF6k0SEmWjmVcHJC2K1Hs3Nq8OquGrx6YkhaYG5RvxpHsOB2LP6cQwBxx
n2RJHUXA7jkDumI+dYlQ9mBJ4kjCZc3bPBQ2GZdGnI7kx3ToEga/qIQwB1aArjjN
nANPbyP1ttLi5cM0wrXlYaBwpLFaxdPBdDUCvx3ER2gpC7D8PbKBMgjGkQI+KR1m
NZ785s57lTdTPRF/t41Iw0mzCwXcYH9XMglNls5EOZJkRzf6ycMvQD8yk199tL3+
vCkmPw0HGe2LTAOLwUMSVJmw14ZfzNsJoyBfhRCzsQKBgQD1mNEUnVUWSw1+7txV
2AcUrIJWQWHmRQqr35WIGNT08faXw1v1psJqIU4KW0b1dC4T/PRpveRfwtUXt39b
bwvNorOeUuhvnKi93o/aDrOOMradExXICl8BRp+xc7fl7ta28QC+zlYs9urLh5/E
az6pSvvHTW39I1wW5zTnOO8zWQKBgQDQWuveIvbz2IO7JOf/orQ67kE6M+hmLdX2
fEF/DHetCDqqi2HoMHtV4d6XdQL9aJ5MwcbfbMBXpISxi2d588hHVoEpvSLi0hDe
ijPu7hrgOZt8n1VLQzih6KSjxSCnxA6LSSr/iCtMNPdIoYdKmRyG8ZgCEbDlJQDZ
RUXtSW48xQKBgGzf8wg9eyPn37K+tyTDINh0ZU9RqtHHF6T7+DEeOQHhZhz/OPwc
kiE0ZIFI15smhurLf5qE2QHuwELEUQw6nTPrBc+RF4OrIk8RpBnZ3JWUO8pEVKqa
lmVdZpvnHcYr7Dmre1Ya6K8EQzA5DoWnuV6ZZCaFV9YZX9CzbIt4fOn5AoGAHbGX
g+T/xOjKfVVZKvmJLgzehuj26fkGUUaMHwsr0yElG0EaBvlB2o+CJZurfWn3hYDo
Utcw4ky0DImNibfQhzow1j36RtEhTlXr6NVORz5uhmg+w6ck3w5EyIJDkSVD3V3k
Ht7NLOMvis5adas0gZbUzxauWznW0SAqQxL//vECgYEAoqNdpO/hvOaIRKZLrzfR
fp/v0Kth2v8p5GF1ukdYGtmuP4qDLekxgkn6AO9ocv/orBtF1ec/pOUG6+rqlZX0
3IJvNF9N0FBEieFxlWpMwIAQr2/VtSOyyyNknhNpxpHBTKWX1nPmjB6pm+AEB8KW
HmCOYVwhpOyitHAfHC7s3hk=
-----END PRIVATE KEY-----
57 changes: 39 additions & 18 deletions wish/cpp/examples/client.cc
Original file line number Diff line number Diff line change
@@ -1,14 +1,31 @@
#include <iostream>
#include <cstring>
#include <iostream>
#include <string>

#include <event2/event.h>
// To use BoringSSL
#define EVENT__HAVE_OPENSSL 1
#include <event2/bufferevent.h>
#include <event2/bufferevent_ssl.h>
#include <event2/dns.h>
#include <event2/event.h>
#include <openssl/ssl.h>

#include "../src/tls_context.h"
Comment on lines +8 to +13
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adjusted include order to comply with Google C++ Style Guide. The same about the other files.

#include "../src/wish_handler.h"

int main() {
// Initialize BoringSSL
SSL_library_init();
SSL_load_error_strings();

TlsContext tls_ctx;
tls_ctx.set_ca_file("../certs/ca.crt");
tls_ctx.set_certificate_file("../certs/client.crt");
tls_ctx.set_private_key_file("../certs/client.key");
if (!tls_ctx.Init(false)) {
std::cerr << "Failed to init TLS context" << std::endl;
return 1;
}
struct event_base *base = event_base_new();
if (!base) {
std::cerr << "Could not initialize libevent!" << std::endl;
Expand All @@ -21,31 +38,35 @@ int main() {
return 1;
}

struct bufferevent *bev = bufferevent_socket_new(base, -1, BEV_OPT_CLOSE_ON_FREE);
SSL *ssl = SSL_new(tls_ctx.ssl_ctx());
struct bufferevent *bev =
bufferevent_openssl_socket_new(base, -1, ssl, BUFFEREVENT_SSL_CONNECTING,
BEV_OPT_CLOSE_ON_FREE);
if (!bev) {
std::cerr << "Could not create bufferevent!" << std::endl;
return 1;
}

if (bufferevent_socket_connect_hostname(bev, dns_base, AF_INET, "127.0.0.1", 8080) < 0) {
if (bufferevent_socket_connect_hostname(bev, dns_base, AF_INET, "127.0.0.1",
8080) < 0) {
std::cerr << "Could not connect!" << std::endl;
return 1;
}

// Handler manages its own lifecycle (deletes itself on close)
WishHandler* handler = new WishHandler(bev, false); // is_server = false
handler->SetOnOpen([handler]() {
std::cout << "Connected and Handshake Complete!" << std::endl;
handler->SendText("Hello WiSH Text!");
handler->SendBinary("Hello WiSH Binary!");
handler->SendMetadata(true, "Hello WiSH Metadata!");
});

handler->SetOnMessage([](uint8_t opcode, const std::string& msg) {
std::cout << "Server says [opcode " << (int)opcode << "]: " << msg << std::endl;
});
WishHandler *handler = new WishHandler(bev, false); // is_server = false

handler->SetOnOpen([handler]()
{
std::cout << "Connected and Handshake Complete!" << std::endl;

handler->SendText("Hello WiSH Text!");
handler->SendBinary("Hello WiSH Binary!");
handler->SendMetadata(true, "Hello WiSH Metadata!"); });

handler->SetOnMessage([](uint8_t opcode, const std::string &msg)
{ std::cout << "Server says [opcode " << (int)opcode << "]: " << msg
<< std::endl; });

handler->Start();

Expand All @@ -54,6 +75,6 @@ int main() {

evdns_base_free(dns_base, 0);
event_base_free(base);

return 0;
}
Loading