diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-05 22:20:45 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-05 22:20:45 +0000 |
commit | e4b4242407fb4b46985e2909969b0549ee4f23e2 (patch) | |
tree | 4d44aa518b03ecaec40150c1e65ed224cbfce7de /src | |
parent | af7203afff555daae7c0b5b060405e25e2da6f24 (diff) |
Tidy up cloaking algorithms a bit
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5879 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_cloaking.cpp | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/src/modules/m_cloaking.cpp b/src/modules/m_cloaking.cpp index 2eb078bf8..ef1bb01a9 100644 --- a/src/modules/m_cloaking.cpp +++ b/src/modules/m_cloaking.cpp @@ -140,39 +140,32 @@ class CloakUser : public ModeHandler { unsigned int iv[] = { key1, key2, key3, key4 }; irc::sepstream seps(ip, '.'); - std::string ra1, ra2, ra3, ra4; - std::string octet1 = seps.GetToken(); - std::string octet2 = seps.GetToken(); - std::string octet3 = seps.GetToken(); - std::string octet4 = seps.GetToken(); - int i1 = atoi(octet1.c_str()); - int i2 = atoi(octet2.c_str()); - int i3 = atoi(octet3.c_str()); - int i4 = atoi(octet4.c_str()); - - octet4 = octet1 + "." + octet2 + "." + octet3 + "." + octet4; - octet3 = octet1 + "." + octet2 + "." + octet3; - octet2 = octet1 + "." + octet2; + std::string ra[4];; + std::string octet[4]; + int i[4]; + + for (int j = 0; j < 4; j++) + { + octet[j] = seps.GetToken(); + i[j] = atoi(octet[j].c_str()); + } + + octet[3] = octet[0] + "." + octet[1] + "." + octet[2] + "." + octet[3]; + octet[2] = octet[0] + "." + octet[1] + "." + octet[2]; + octet[1] = octet[0] + "." + octet[1]; /* Reset the Hash module and send it our IV */ HashResetRequest(Sender, HashProvider).Send(); HashKeyRequest(Sender, HashProvider, iv).Send(); /* Send the Hash module a different hex table for each octet group's Hash sum */ - HashHexRequest(Sender, HashProvider, xtab[(key1+i1) % 4]).Send(); - ra1 = std::string(HashSumRequest(Sender, HashProvider, octet1).Send()).substr(0,6); - - HashHexRequest(Sender, HashProvider, xtab[(key2+i2) % 4]).Send(); - ra2 = std::string(HashSumRequest(Sender, HashProvider, octet2).Send()).substr(0,6); - - HashHexRequest(Sender, HashProvider, xtab[(key3+i3) % 4]).Send(); - ra3 = std::string(HashSumRequest(Sender, HashProvider, octet3).Send()).substr(0,6); - - HashHexRequest(Sender, HashProvider, xtab[(key4+i4) % 4]).Send(); - ra4 = std::string(HashSumRequest(Sender, HashProvider, octet4).Send()).substr(0,6); - + for (int k = 0; k < 3; k++) + { + HashHexRequest(Sender, HashProvider, xtab[(iv[k]+i[k]) % 4]).Send(); + ra[k] = std::string(HashSumRequest(Sender, HashProvider, octet[k]).Send()).substr(0,6); + } /* Stick them all together */ - return std::string().append(ra1).append(".").append(ra2).append(".").append(ra3).append(".").append(ra4); + return std::string().append(ra[0]).append(".").append(ra[1]).append(".").append(ra[2]).append(".").append(ra[3]); } std::string Cloak6(const char* ip) |