21 #include "../../clib/clib.h" 22 #include "../../clib/logfacility.h" 28 bool compareVersion(
int ver1major,
int ver1minor,
int ver1build,
int ver2major,
int ver2minor,
33 size_t len = name.length();
34 if ( ( strnicmp(
"none", name.c_str(), len ) == 0 ) ||
35 ( strnicmp(
"ignition", name.c_str(), len ) == 0 ) ||
36 ( strnicmp(
"uorice", name.c_str(), len ) == 0 ) )
42 else if ( strnicmp(
"2.0.0x", name.c_str(), 6 ) == 0 )
45 infoCrypt.
uiKey1 = 0x2D13A5FD;
46 infoCrypt.
uiKey2 = 0xA39D527F;
52 size_t dot1 = name.find_first_of(
'.', 0 );
53 size_t dot2 = name.find_first_of(
'.', dot1 + 1 );
55 int major = atoi( name.substr( 0, dot1 ).c_str() );
56 int minor = atoi( name.substr( dot1 + 1, dot2 - dot1 - 1 ).c_str() );
57 int build = atoi( name.substr( dot2 + 1, len - dot2 - 1 ).c_str() );
59 int temp = ( ( major << 9 | minor ) << 10 | build ) ^ ( ( build * build ) << 5 );
60 infoCrypt.
uiKey1 = ( temp << 4 ) ^ ( minor * minor ) ^ ( minor * 0x0B000000 ) ^
61 ( build * 0x380000 ) ^ 0x2C13A5FD;
62 temp = ( ( ( major << 9 | build ) << 10 | minor ) * 8 ) ^ ( build * build * 0x0c00 );
64 temp ^ ( minor * minor ) ^ ( minor * 0x6800000 ) ^ ( build * 0x1c0000 ) ^ 0x0A31D527F;
68 else if ( ( major == 1 ) && ( minor == 25 ) && ( build == 36 ) )
82 POLLOG_ERROR <<
"Malformed encryption version string: " << name
83 <<
"using Ignition encryption engine\n";
88 bool compareVersion(
int ver1major,
int ver1minor,
int ver1build,
int ver2major,
int ver2minor,
91 if ( ver1major > ver2major )
93 else if ( ver1major < ver2major )
95 else if ( ver1minor > ver2minor )
97 else if ( ver1minor < ver2minor )
99 else if ( ver1build > ver2build )
101 else if ( ver1build < ver2build )
void CalculateCryptKeys(const std::string &name, TCryptInfo &infoCrypt)
bool compareVersion(int ver1major, int ver1minor, int ver1build, int ver2major, int ver2minor, int ver2build)