diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-18 01:40:19 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-18 01:40:19 +0000 |
commit | cced60255b08181d35b9bb26545a85feebd6b5cb (patch) | |
tree | 413c966a5d0a5a7ae5a3b27d47ce1e471f38a73a /src/modules/m_spanningtree | |
parent | 95c1fb9bdd5f93cf4f8306a7b8ae9ca098aade1a (diff) |
Improve SSL fingerprint messages when linking servers
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11899 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree')
-rw-r--r-- | src/modules/m_spanningtree/hmac.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/modules/m_spanningtree/hmac.cpp b/src/modules/m_spanningtree/hmac.cpp index 00f908dc8..bf98b16d1 100644 --- a/src/modules/m_spanningtree/hmac.cpp +++ b/src/modules/m_spanningtree/hmac.cpp @@ -132,10 +132,24 @@ bool TreeSocket::ComparePass(const Link& link, const std::string &theirs) if (req.cert) { fp = req.cert->GetFingerprint(); - ServerInstance->Logs->Log("m_spanningtree", DEFAULT, std::string("Server SSL fingerprint ") + fp); } } + if (auth_challenge) + { + std::string our_hmac = MakePass(link.RecvPass, ourchallenge); + + /* Straight string compare of hashes */ + if (our_hmac != theirs) + return false; + } + else + { + /* Straight string compare of plaintext */ + if (link.RecvPass != theirs) + return false; + } + if (auth_fingerprint) { /* Require fingerprint to exist and match */ @@ -143,18 +157,13 @@ bool TreeSocket::ComparePass(const Link& link, const std::string &theirs) { ServerInstance->SNO->WriteToSnoMask('l',"Invalid SSL fingerprint on link %s: need '%s' got '%s'", link.Name.c_str(), link.Fingerprint.c_str(), fp.c_str()); + SendError("Provided invalid SSL fingerprint " + fp + " - expected " + link.Fingerprint); return false; } } - - if (auth_challenge) + else if (!fp.empty()) { - std::string our_hmac = MakePass(link.RecvPass, ourchallenge); - - /* Straight string compare of hashes */ - return our_hmac == theirs; + ServerInstance->SNO->WriteToSnoMask('l', "SSL fingerprint for link %s is %s", link.Name.c_str(), fp.c_str()); } - - /* Straight string compare of plaintext */ - return link.RecvPass == theirs; + return true; } |