|
Botan
1.11.15
|
#include <srp6_files.h>
Classes | |
| struct | SRP6_Data |
Public Member Functions | |
| bool | lookup_user (const std::string &username, BigInt &v, std::vector< byte > &salt, std::string &group_id) const |
| SRP6_Authenticator_File (const std::string &filename) | |
A GnuTLS compatible SRP6 authenticator file
Definition at line 20 of file srp6_files.h.
| Botan::SRP6_Authenticator_File::SRP6_Authenticator_File | ( | const std::string & | filename | ) |
| filename | will be opened and processed as a SRP authenticator file |
Definition at line 15 of file srp6_files.cpp.
References Botan::base64_decode(), Botan::BER::decode(), Botan::split_on(), and Botan::unlock().
{
std::ifstream in(filename.c_str());
if(!in)
return; // no entries
while(in.good())
{
std::string line;
std::getline(in, line);
std::vector<std::string> parts = split_on(line, ':');
if(parts.size() != 4)
throw Decoding_Error("Invalid line in SRP authenticator file");
std::string username = parts[0];
BigInt v = BigInt::decode(base64_decode(parts[1]));
std::vector<byte> salt = unlock(base64_decode(parts[2]));
BigInt group_id_idx = BigInt::decode(base64_decode(parts[3]));
std::string group_id;
if(group_id_idx == 1)
group_id = "modp/srp/1024";
else if(group_id_idx == 2)
group_id = "modp/srp/1536";
else if(group_id_idx == 3)
group_id = "modp/srp/2048";
else
continue; // unknown group, ignored
entries[username] = SRP6_Data(v, salt, group_id);
}
}
| bool Botan::SRP6_Authenticator_File::lookup_user | ( | const std::string & | username, |
| BigInt & | v, | ||
| std::vector< byte > & | salt, | ||
| std::string & | group_id | ||
| ) | const |
Definition at line 52 of file srp6_files.cpp.
{
std::map<std::string, SRP6_Data>::const_iterator i = entries.find(username);
if(i == entries.end())
return false;
v = i->second.v;
salt = i->second.salt;
group_id = i->second.group_id;
return true;
}
1.7.6.1