"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/auth/SecureRemotePassword/srp.cpp" between
Firebird-3.0.2.32703-0.tar.bz2 and Firebird-3.0.4.33054-0.tar.bz2

About: Firebird is a relational database offering many ANSI SQL standard features.

srp.cpp  (Firebird-3.0.2.32703-0.tar.bz2):srp.cpp  (Firebird-3.0.4.33054-0.tar.bz2)
skipping to change at line 32 skipping to change at line 32
namespace Auth { namespace Auth {
class RemoteGroup class RemoteGroup
{ {
public: public:
BigInteger prime, generator, k; BigInteger prime, generator, k;
explicit RemoteGroup(Firebird::MemoryPool&) explicit RemoteGroup(Firebird::MemoryPool&)
: prime(primeStr), generator(genStr), k() : prime(primeStr), generator(genStr), k()
{ {
Auth::Sha1 hash; Auth::SecureHash<Firebird::Sha1> hash;
hash.processInt(prime); hash.processInt(prime);
if (prime.length() > generator.length()) if (prime.length() > generator.length())
{ {
unsigned int pad = prime.length() - generator.length(); unsigned int pad = prime.length() - generator.length();
char pb[1024]; char pb[1024];
memset(pb, 0, pad); memset(pb, 0, pad);
hash.process(pad, pb); hash.process(pad, pb);
} }
skipping to change at line 62 skipping to change at line 62
static RemoteGroup* getGroup() static RemoteGroup* getGroup()
{ {
return &group(); return &group();
} }
}; };
InitInstance<RemoteGroup> RemoteGroup::group; InitInstance<RemoteGroup> RemoteGroup::group;
const char* RemotePassword::plugName = "Srp"; const char* RemotePassword::plugName = "Srp";
string RemotePassword::pluginName(unsigned bits)
{
string plg;
plg.printf("%s%u", plugName, bits);
return plg;
}
RemotePassword::RemotePassword() RemotePassword::RemotePassword()
: group(RemoteGroup::getGroup()) : group(RemoteGroup::getGroup())
{ {
#if SRP_DEBUG > 1 #if SRP_DEBUG > 1
privateKey = BigInteger("60975527035CF2AD1989806F0407210BC81EDC04E2762A56 AFD529DDDA2D4393"); privateKey = BigInteger("60975527035CF2AD1989806F0407210BC81EDC04E2762A56 AFD529DDDA2D4393");
#else #else
privateKey.random(RemotePassword::SRP_KEY_SIZE); privateKey.random(RemotePassword::SRP_KEY_SIZE);
#endif #endif
privateKey %= group->prime; privateKey %= group->prime;
} }
skipping to change at line 190 skipping to change at line 197
hash.reset(); hash.reset();
hash.processInt(group->generator); hash.processInt(group->generator);
BigInteger n2; BigInteger n2;
hash.getInt(n2); hash.getInt(n2);
n1 = n1.modPow(n2, group->prime); n1 = n1.modPow(n2, group->prime);
hash.reset(); hash.reset();
hash.process(account); hash.process(account);
hash.getInt(n2); hash.getInt(n2);
return MakeProof(n1,n2,salt,sessionKey);
hash.reset();
hash.processInt(n1); // H(prime) ^ H(g)
hash.processInt(n2); // H(I)
hash.process(salt); // s
hash.processInt(clientPublicKey); // A
hash.processInt(serverPublicKey); // B
hash.process(sessionKey); // K
BigInteger rc;
hash.getInt(rc);
return rc;
} }
#if SRP_DEBUG > 0 #if SRP_DEBUG > 0
void dumpIt(const char* name, const Firebird::UCharBuffer& data) void dumpIt(const char* name, const Firebird::UCharBuffer& data)
{ {
fprintf(stderr, "%s\n", name); fprintf(stderr, "%s\n", name);
for (size_t x=0; x<data.getCount(); ++x) for (size_t x=0; x<data.getCount(); ++x)
fprintf(stderr, "%02x ", data[x]); fprintf(stderr, "%02x ", data[x]);
fprintf(stderr, "\n"); fprintf(stderr, "\n");
} }
 End of changes. 3 change blocks. 
13 lines changed or deleted 9 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)