|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| UnitTest++/ | H | 03-May-2022 | - | 7,919 | 6,675 |
| bin/ | H | 16-Apr-2018 | - | 1,115 | 920 |
| cmake/ | H | 16-Apr-2018 | - | 515 | 479 |
| doc/ | H | 16-Apr-2018 | - | 2,266 | 1,723 |
| examples/ | H | 03-May-2022 | - | 7,904 | 6,224 |
| lib/jar/optional/ | H | 03-May-2022 | - | | |
| m4/ | H | 03-May-2022 | - | 631 | 566 |
| scripts/ubuntu_12/ | H | 16-Apr-2018 | - | 112 | 67 |
| spec/ | H | 03-May-2022 | - | 45,607 | 45,228 |
| src/ | H | 03-May-2022 | - | 1,858,961 | 1,624,495 |
| test/ | H | 03-May-2022 | - | 13,716 | 10,670 |
| .gitignore | H A D | 16-Apr-2018 | 696 | 68 | 67 |
| .travis.yml | H A D | 16-Apr-2018 | 150 | 11 | 8 |
| AUTHORS | H A D | 16-Apr-2018 | 38 | 2 | 1 |
| LICENSE | H A D | 16-Apr-2018 | 2 KiB | 46 | 36 |
| Makefile.am | H A D | 16-Apr-2018 | 310 | 17 | 10 |
| NEWS | H A D | 16-Apr-2018 | 55.1 KiB | 1,540 | 1,018 |
| README | H A D | 16-Apr-2018 | 979 | 36 | 23 |
| README.AIX | H A D | 16-Apr-2018 | 737 | 25 | 15 |
| README.SSL | H A D | 16-Apr-2018 | 7.2 KiB | 253 | 193 |
| README.SunOS | H A D | 16-Apr-2018 | 319 | 13 | 7 |
| bootstrap | H A D | 16-Apr-2018 | 308 | 16 | 10 |
| build_vs12.bat | H A D | 16-Apr-2018 | 341 | 13 | 10 |
| build_vs14.bat | H A D | 16-Apr-2018 | 341 | 13 | 10 |
| build_vs15.bat | H A D | 16-Apr-2018 | 341 | 13 | 10 |
| configure.ac | H A D | 03-May-2022 | 9.5 KiB | 360 | 319 |
| quickfix.pc.in | H A D | 16-Apr-2018 | 215 | 12 | 10 |
| quickfix_vs12.sln | H A D | 16-Apr-2018 | 9.7 KiB | 134 | 133 |
| quickfix_vs14.sln | H A D | 16-Apr-2018 | 9.7 KiB | 134 | 133 |
| quickfix_vs15.sln | H A D | 16-Apr-2018 | 9.7 KiB | 134 | 133 |
README
1BUILDING AND INSTALLING
2
3 Full instructions:
4 See doc/html/building.html
5
6 Quick instructions:
7 ./bootstrap
8 ./configure
9 make
10 make check
11 sudo make install
12
13For SunOS and AIX have a look at README.SunOS and README.AIX.
14
15--------------------------------------------------------------------
16
17It is possible to build many components with a relatively newer version of cmake.
18
19
20For example on Windows,
21
22mkdir build
23cd build
24cmake -DHAVE_SSL=ON -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX:PATH="install-path" -DOPENSSL_ROOT_DIR="path to openssl" ..
25Then build in Visual Studio or on command prompt.
26
27On Linux (with system openssl),
28
29cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_SSL=ON -DCMAKE_INSTALL_PREFIX:PATH="install-path" ..
30make -j 4 install
31
32If one has Ninja then (with system openssl),
33
34cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_SSL=ON -DCMAKE_INSTALL_PREFIX:PATH="install-path" ..
35ninja install
36
README.AIX
README.SSL
1------------
2INTRODUCTION
3------------
4
5This document describes the rudimentary SSL functionality available in QuickFIX. OpenSSL (https://www.openssl.org/) has been used to provide the SSL functionality. The QuickFIX library can be built with OpenSSL or it can be built without OpenSSL support and the classes (files) related to the SSL functionality used directly in the user project.
6
7--------------------------------------
8BUILDING QUICKFIX WITH OPENSSL SUPPORT
9--------------------------------------
10
111. Unix
12
13$ ./configure --with-openssl="path to openssl install"
14
15"path to openssl install" dir should have include/openssl and lib directories with appropriate files. If no path is specified, then the default openssl installation is used.
16
17$ make
18
192. Windows
20
21The Visual Studio project will have to be configured to find the OpenSSL headers and libs.
22
23#define HAVE_SSL 1
24
25will be required in src/config_windows.h
26
27--------------------------------------------------------------
28USING SSL FILES WITHOUT BUILDING QUICKFIX WITH OPENSSL SUPPORT
29--------------------------------------------------------------
30
31The SSL functionality is contained in the files
32
33SSLSocketAcceptor.h
34SSLSocketAcceptor.cpp
35SSLSocketInitiator.h
36SSLSocketInitiator.cpp
37SSLSocketConnection.h
38SSLSocketConnection.cpp
39ThreadedSSLSocketAcceptor.h
40ThreadedSSLSocketAcceptor.cpp
41ThreadedSSLSocketInitiator.h
42ThreadedSSLSocketInitiator.cpp
43ThreadedSSLSocketConnection.h
44ThreadedSSLSocketConnection.cpp
45UtilitySSL.h
46UtilitySSL.cpp
47
48These files can be directly incorporated in the a project. HAVE_SSL will have to be defined in addition to other OpenSSL related configuration.
49
50--------------
51SSL PARAMETERS
52--------------
53
54Parameters have to be defined in the DEFAULT section of the ini file.
55
56SSL config for acceptor:
57
58[DEFAULT]
59
60#This directive points to the PEM-encoded Certificate file and
61#optionally also to the corresponding RSA or DSA Private Key file for it
62#(contained in the same file).
63
64ServerCertificateFile=
65
66#This directive points to the PEM-encoded Private Key file. If
67#the Private Key is not combined with the Certificate in the
68#server certificate file, use this additional directive to point to the file with
69#the stand-alone Private Key.
70
71ServerCertificateKeyFile=
72
73#This directive sets the Certificate verification level. It applies to the authentication process used in the
74#standard SSL handshake when a connection is established. 0 implies do not verify. 1 implies verify.
75
76VerifyLevel=
77
78#This directive sets the all-in-one file where you can assemble the
79#Certificate Revocation Lists (CRL) of Certification Authorities (CA) whose
80#clients you deal with.
81
82CertificateRevocationListFile=
83
84#This directive sets the directory where you keep the Certificate Revocation
85#Lists (CRL) of Certification Authorities (CAs) whose clients you deal with.
86
87CertificateRevocationListDirectory=
88
89SSL config for initiator:
90
91[DEFAULT]
92
93#This directive points to the PEM-encoded Certificate file and
94#optionally also to the corresponding RSA or DSA Private Key file for it
95#(contained in the same file).
96
97ClientCertificateFile=
98
99#This directive points to the PEM-encoded Private Key file. If
100#the Private Key is not combined with the Certificate in the
101#server certificate file, use this additional directive to point to the file with
102#the stand-alone Private Key.
103
104ClientCertificateKeyFile=
105
106Common options:
107
108# This directive can be used to control the SSL protocol flavors the application
109# should use when establishing its environment.
110#
111# The available (case-insensitive) protocols are:
112#
113# SSLv2
114#
115# This is the Secure Sockets Layer (SSL) protocol, version 2.0. It is the
116# original SSL protocol as designed by Netscape Corporation.
117#
118# SSLv3
119#
120# This is the Secure Sockets Layer (SSL) protocol, version 3.0. It is the
121# successor to SSLv2 and the currently (as of February 1999) de-facto
122# standardized SSL protocol from Netscape Corporation. It's supported by
123# almost all popular browsers.
124#
125# TLSv1
126#
127# This is the Transport Layer Security (TLS) protocol, version 1.0.
128#
129# TLSv1_1
130#
131# This is the Transport Layer Security (TLS) protocol, version 1.1.
132#
133# TLSv1_2
134#
135# This is the Transport Layer Security (TLS) protocol, version 1.2.
136#
137# all
138#
139# This is a shortcut for `+SSLv2 +SSLv3 +TLSv1 +TLSv1_1 +TLSv1_2' and a convenient way for
140# enabling all protocols except one when used in combination with the minus
141# sign on a protocol as the example above shows.
142#
143# Example:
144#
145# enable all but not SSLv2
146# SSLProtocol = all -SSLv2
147#
148# `all -SSLv2` is the default value when the parameter is not specified.
149
150SSLProtocol=
151
152# This complex directive uses a colon-separated cipher-spec string consisting
153# of OpenSSL cipher specifications to configure the Cipher Suite the client is
154# permitted to negotiate in the SSL handshake phase. Notice that this directive
155# can be used both in per-server and per-directory context. In per-server
156# context it applies to the standard SSL handshake when a connection is
157# established. In per-directory context it forces a SSL renegotation with the
158# reconfigured Cipher Suite after the HTTP request was read but before the HTTP
159# response is sent.
160#
161# An SSL cipher specification in cipher-spec is composed of 4 major attributes
162# plus a few extra minor ones:
163#
164# Key Exchange Algorithm:
165# RSA or Diffie-Hellman variants.
166#
167# Authentication Algorithm:
168# RSA, Diffie-Hellman, DSS or none.
169#
170# Cipher/Encryption Algorithm:
171# DES, Triple-DES, RC4, RC2, IDEA or none.
172#
173# MAC Digest Algorithm:
174# MD5, SHA or SHA1.
175#
176# For more details refer to mod_ssl documentation.
177#
178# Example: RC4+RSA:+HIGH:
179
180SSLCipherSuite=
181
182#This directive sets the all-in-one file where you can assemble the
183#Certificates of Certification Authorities (CA) whose clients you deal with.
184
185CertificationAuthoritiesFile=
186
187#This directive sets the directory where you keep the Certificates of
188#Certification Authorities (CAs) whose clients you deal with.
189
190CertificationAuthoritiesDirectory=
191
192-------------
193EXAMPLE USAGE
194-------------
195
196Acceptor:
197
198 try
199 {
200 FIX::SessionSettings settings( file );
201
202 Application application;
203 FIX::FileStoreFactory storeFactory( settings );
204 FIX::ScreenLogFactory logFactory( settings );
205 FIX::ThreadedSSLSocketAcceptor acceptor( application, storeFactory, settings, logFactory );
206
207 acceptor.start();
208 wait();
209 acceptor.stop();
210 return 0;
211 }
212 catch (const std::exception & e )
213 {
214 std::cout << e.what() << std::endl;
215 return 1;
216 }
217
218Initiator:
219
220 try
221 {
222 FIX::SessionSettings settings( file );
223
224 Application application;
225 FIX::FileStoreFactory storeFactory( settings );
226 FIX::ScreenLogFactory logFactory( settings );
227 FIX::ThreadedSSLSocketInitiator initiator( application, storeFactory, settings, logFactory );
228
229 initiator.start();
230 application.run();
231 initiator.stop();
232
233 return 0;
234 }
235 catch ( std::exception & e )
236 {
237 std::cout << e.what();
238 return 1;
239 }
240
241
242If the server or client certficate key is password protected, than the password can be set by the method
243
244 void setPassword(const std::string & pwd);
245
246There are sample SSL certificates in the sub-directory bin/cfg/certs/.
247
248----------
249CONCLUSION
250----------
251
252Since this is the first implementation of OpenSSL support the users are requested to let the developer know about bugs/problems and missing implementation.
253
README.SunOS
1I was able to get the 64 bit version of QuickFIX library to compile on Solaris 10 (sparc) with workshop 12.3 compiler.
2Unit tests do not compile so these were disabled.
3
4Example script:
5
6#!/bin/sh
7
8./bootstrap
9
10CC=cc CXX=CC CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 configure --prefix="Your prefix"
11
12make && make install
13