Removed --certificate-fingerprint argument #4522
Used profile dir for fingerprint file path instead
This commit is contained in:
parent
6580ad0015
commit
407f92e9d4
|
@ -161,7 +161,6 @@ Client::connect()
|
||||||
// create the socket
|
// create the socket
|
||||||
IDataSocket* socket = m_socketFactory->create(m_useSecureNetwork);
|
IDataSocket* socket = m_socketFactory->create(m_useSecureNetwork);
|
||||||
m_socket = dynamic_cast<TCPSocket*>(socket);
|
m_socket = dynamic_cast<TCPSocket*>(socket);
|
||||||
m_socket->setFingerprintFilename(m_args.m_certFingerprintFilename);
|
|
||||||
|
|
||||||
// filter socket messages, including a packetizing filter
|
// filter socket messages, including a packetizing filter
|
||||||
m_stream = socket;
|
m_stream = socket;
|
||||||
|
|
|
@ -36,6 +36,11 @@
|
||||||
|
|
||||||
#define MAX_ERROR_SIZE 65535
|
#define MAX_ERROR_SIZE 65535
|
||||||
|
|
||||||
|
static const char kFingerprintDirName[] = "ssl/fingerprints";
|
||||||
|
static const char kFingerprintLocalFilename[] = "local.txt";
|
||||||
|
static const char kFingerprintTrustedServersFilename[] = "trusted-servers.txt";
|
||||||
|
static const char kFingerprintTrustedClientsFilename[] = "trusted-clients.txt";
|
||||||
|
|
||||||
struct Ssl {
|
struct Ssl {
|
||||||
SSL_CTX* m_context;
|
SSL_CTX* m_context;
|
||||||
SSL* m_ssl;
|
SSL* m_ssl;
|
||||||
|
@ -45,8 +50,7 @@ SecureSocket::SecureSocket(
|
||||||
IEventQueue* events,
|
IEventQueue* events,
|
||||||
SocketMultiplexer* socketMultiplexer) :
|
SocketMultiplexer* socketMultiplexer) :
|
||||||
TCPSocket(events, socketMultiplexer),
|
TCPSocket(events, socketMultiplexer),
|
||||||
m_secureReady(false),
|
m_secureReady(false)
|
||||||
m_certFingerprintFilename()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,7 +298,7 @@ SecureSocket::secureConnect(int socket)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LOG((CLOG_ERR "failed to verity server certificate fingerprint"));
|
LOG((CLOG_ERR "failed to verify server certificate fingerprint"));
|
||||||
disconnect();
|
disconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -444,17 +448,16 @@ SecureSocket::formatFingerprint(String& fingerprint, bool hex, bool separator)
|
||||||
bool
|
bool
|
||||||
SecureSocket::verifyCertFingerprint()
|
SecureSocket::verifyCertFingerprint()
|
||||||
{
|
{
|
||||||
if (m_certFingerprintFilename.empty()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// calculate received certificate fingerprint
|
// calculate received certificate fingerprint
|
||||||
X509 *cert = cert = SSL_get_peer_certificate(m_ssl->m_ssl);
|
X509 *cert = cert = SSL_get_peer_certificate(m_ssl->m_ssl);
|
||||||
EVP_MD* tempDigest;
|
EVP_MD* tempDigest;
|
||||||
unsigned char tempFingerprint[EVP_MAX_MD_SIZE];
|
unsigned char tempFingerprint[EVP_MAX_MD_SIZE];
|
||||||
unsigned int tempFingerprintLen;
|
unsigned int tempFingerprintLen;
|
||||||
tempDigest = (EVP_MD*)EVP_sha1();
|
tempDigest = (EVP_MD*)EVP_sha1();
|
||||||
if (X509_digest(cert, tempDigest, tempFingerprint, &tempFingerprintLen) <= 0) {
|
int digestResult = X509_digest(cert, tempDigest, tempFingerprint, &tempFingerprintLen);
|
||||||
|
|
||||||
|
if (digestResult <= 0) {
|
||||||
|
LOG((CLOG_ERR "failed to calculate fingerprint, digest result: %d", digestResult));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,15 +466,21 @@ SecureSocket::verifyCertFingerprint()
|
||||||
formatFingerprint(fingerprint);
|
formatFingerprint(fingerprint);
|
||||||
LOG((CLOG_NOTE "server fingerprint: %s", fingerprint.c_str()));
|
LOG((CLOG_NOTE "server fingerprint: %s", fingerprint.c_str()));
|
||||||
|
|
||||||
|
String trustedServersFilename;
|
||||||
|
trustedServersFilename = synergy::string::sprintf(
|
||||||
|
"%s/%s/%s",
|
||||||
|
ARCH->getProfileDirectory().c_str(),
|
||||||
|
kFingerprintDirName,
|
||||||
|
kFingerprintTrustedServersFilename);
|
||||||
|
|
||||||
// check if this fingerprint exist
|
// check if this fingerprint exist
|
||||||
String fileLine;
|
String fileLine;
|
||||||
std::ifstream file;
|
std::ifstream file;
|
||||||
file.open(m_certFingerprintFilename.c_str());
|
file.open(trustedServersFilename.c_str());
|
||||||
|
|
||||||
bool isValid = false;
|
bool isValid = false;
|
||||||
while (!file.eof()) {
|
while (!file.eof()) {
|
||||||
getline(file,fileLine);
|
getline(file,fileLine);
|
||||||
// example of a fingerprint:A1:B2:C3
|
|
||||||
if (!fileLine.empty()) {
|
if (!fileLine.empty()) {
|
||||||
if (fileLine.compare(fingerprint) == 0) {
|
if (fileLine.compare(fingerprint) == 0) {
|
||||||
isValid = true;
|
isValid = true;
|
||||||
|
|
|
@ -43,7 +43,6 @@ public:
|
||||||
|
|
||||||
void secureConnect();
|
void secureConnect();
|
||||||
void secureAccept();
|
void secureAccept();
|
||||||
void setFingerprintFilename(String& f) { m_certFingerprintFilename = f; }
|
|
||||||
bool isReady() const { return m_secureReady; }
|
bool isReady() const { return m_secureReady; }
|
||||||
bool isSecureReady();
|
bool isSecureReady();
|
||||||
bool isSecure() { return true; }
|
bool isSecure() { return true; }
|
||||||
|
@ -79,5 +78,4 @@ private:
|
||||||
private:
|
private:
|
||||||
Ssl* m_ssl;
|
Ssl* m_ssl;
|
||||||
bool m_secureReady;
|
bool m_secureReady;
|
||||||
String m_certFingerprintFilename;
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -89,10 +89,6 @@ ArgParser::parseClientArgs(ClientArgs& args, int argc, const char* const* argv)
|
||||||
// define scroll
|
// define scroll
|
||||||
args.m_yscroll = atoi(argv[++i]);
|
args.m_yscroll = atoi(argv[++i]);
|
||||||
}
|
}
|
||||||
else if (isArg(i, argc, argv, NULL, "--certificate-fingerprint", 1)) {
|
|
||||||
// define scroll
|
|
||||||
args.m_certFingerprintFilename = argv[++i];
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
if (i + 1 == argc) {
|
if (i + 1 == argc) {
|
||||||
args.m_synergyAddress = argv[i];
|
args.m_synergyAddress = argv[i];
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include "synergy/ClientArgs.h"
|
#include "synergy/ClientArgs.h"
|
||||||
|
|
||||||
ClientArgs::ClientArgs() :
|
ClientArgs::ClientArgs() :
|
||||||
m_yscroll(0),
|
m_yscroll(0)
|
||||||
m_certFingerprintFilename()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,5 +27,4 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int m_yscroll;
|
int m_yscroll;
|
||||||
String m_certFingerprintFilename;
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue