8 #include <botan/parsing.h>     9 #include <botan/exceptn.h>    10 #include <botan/charset.h>    11 #include <botan/get_byte.h>    22    for(std::string::const_iterator i = number.begin(); i != number.end(); ++i)
    24       const u32bit OVERFLOW_MARK = 0xFFFFFFFF / 10;
    31       if((n > OVERFLOW_MARK) || (n == OVERFLOW_MARK && digit > 5))
    56    while(lenstr.size() < min_len)
    57       lenstr = 
"0" + lenstr;
    70    const char suffix = timespec[timespec.size()-1];
    71    std::string value = timespec.substr(0, timespec.size()-1);
    77    else if(suffix == 
's')
    79    else if(suffix == 
'm')
    81    else if(suffix == 
'h')
    83    else if(suffix == 
'd')
    85    else if(suffix == 
'y')
    86       scale = 365 * 24 * 60 * 60;
    98    if(namex.find(
'(') == std::string::npos &&
    99       namex.find(
')') == std::string::npos)
   100       return std::vector<std::string>(1, namex);
   102    std::string name = namex, substring;
   103    std::vector<std::string> elems;
   106    elems.push_back(name.substr(0, name.find(
'(')));
   107    name = name.substr(name.find(
'('));
   109    for(std::string::const_iterator i = name.begin(); i != name.end(); ++i)
   117          if(level == 1 && i == name.end() - 1)
   119             if(elems.size() == 1)
   120                elems.push_back(substring.substr(1));
   122                elems.push_back(substring);
   126          if(level == 0 || (level == 1 && i != name.end() - 1))
   131       if(c == 
',' && level == 1)
   133          if(elems.size() == 1)
   134             elems.push_back(substring.substr(1));
   136             elems.push_back(substring);
   152 std::vector<std::string> 
split_on(
const std::string& str, 
char delim)
   154    std::vector<std::string> elems;
   155    if(str == 
"") 
return elems;
   158    for(std::string::const_iterator i = str.begin(); i != str.end(); ++i)
   163             elems.push_back(substr);
   172    elems.push_back(substr);
   182    std::string substring;
   183    std::vector<u32bit> oid_elems;
   185    for(std::string::const_iterator i = oid.begin(); i != oid.end(); ++i)
   193          oid_elems.push_back(
to_u32bit(substring));
   202    oid_elems.push_back(
to_u32bit(substring));
   204    if(oid_elems.size() < 2)
   215    std::string::const_iterator p1 = name1.begin();
   216    std::string::const_iterator p2 = name2.begin();
   221    while(p1 != name1.end() && p2 != name2.end())
   231          if(p1 == name1.end() && p2 == name2.end())
   233          if(p1 == name1.end() || p2 == name2.end())
   246    if((p1 != name1.end()) || (p2 != name2.end()))
   256    std::vector<std::string> parts = 
split_on(str, 
'.');
   258    if(parts.size() != 4)
   263    for(
size_t i = 0; i != parts.size(); ++i)
   270       ip = (ip << 8) | (octet & 0xFF);
   283    for(
size_t i = 0; i != 
sizeof(ip); ++i)
 std::vector< std::string > parse_algorithm_name(const std::string &namex)
bool x500_name_cmp(const std::string &name1, const std::string &name2)
bool caseless_cmp(char a, char b)
std::string ipv4_to_string(u32bit ip)
std::vector< std::string > split_on(const std::string &str, char delim)
std::invalid_argument Invalid_Argument
byte get_byte(size_t byte_num, T input)
unsigned long long u64bit
u32bit timespec_to_u32bit(const std::string ×pec)
std::string to_string(u64bit n, size_t min_len)
u32bit to_u32bit(const std::string &number)
std::vector< u32bit > parse_asn1_oid(const std::string &oid)
u32bit string_to_ipv4(const std::string &str)