8 #include <botan/x509_dn.h>     9 #include <botan/der_enc.h>    10 #include <botan/ber_dec.h>    11 #include <botan/parsing.h>    12 #include <botan/internal/stl_util.h>    13 #include <botan/oids.h>    29    std::multimap<OID, std::string>::const_iterator j;
    30    for(j = args.begin(); j != args.end(); ++j)
    39    std::multimap<std::string, std::string>::const_iterator j;
    40    for(j = args.begin(); j != args.end(); ++j)
    48                             const std::string& str)
    62    typedef std::multimap<OID, ASN1_String>::iterator rdn_iter;
    64    std::pair<rdn_iter, rdn_iter> range = dn_info.equal_range(oid);
    65    for(rdn_iter j = range.first; j != range.second; ++j)
    66       if(j->second.value() == str)
    78    typedef std::multimap<OID, ASN1_String>::const_iterator rdn_iter;
    80    std::multimap<OID, std::string> retval;
    81    for(rdn_iter j = dn_info.begin(); j != dn_info.end(); ++j)
    91    typedef std::multimap<OID, ASN1_String>::const_iterator rdn_iter;
    93    std::multimap<std::string, std::string> retval;
    94    for(rdn_iter j = dn_info.begin(); j != dn_info.end(); ++j)
   104    typedef std::multimap<OID, ASN1_String>::const_iterator rdn_iter;
   107    std::pair<rdn_iter, rdn_iter> range = dn_info.equal_range(oid);
   109    std::vector<std::string> values;
   110    for(rdn_iter j = range.first; j != range.second; ++j)
   111       values.push_back(j->second.value());
   128    if(info == 
"Name" || info == 
"CommonName") 
return "X520.CommonName";
   129    if(info == 
"SerialNumber")                 
return "X520.SerialNumber";
   130    if(info == 
"Country")                      
return "X520.Country";
   131    if(info == 
"Organization")                 
return "X520.Organization";
   132    if(info == 
"Organizational Unit" || info == 
"OrgUnit")
   133       return "X520.OrganizationalUnit";
   134    if(info == 
"Locality")                     
return "X520.Locality";
   135    if(info == 
"State" || info == 
"Province")  
return "X520.State";
   136    if(info == 
"Email")                        
return "RFC822";
   145    typedef std::multimap<OID, std::string>::const_iterator rdn_iter;
   150    if(attr1.size() != attr2.size()) 
return false;
   152    rdn_iter p1 = attr1.begin();
   153    rdn_iter p2 = attr2.begin();
   157       if(p1 == attr1.end() && p2 == attr2.end())
   159       if(p1 == attr1.end())      
return false;
   160       if(p2 == attr2.end())      
return false;
   161       if(p1->first != p2->first) 
return false;
   175    return !(dn1 == dn2);
   183    typedef std::multimap<OID, std::string>::const_iterator rdn_iter;
   188    if(attr1.size() < attr2.size()) 
return true;
   189    if(attr1.size() > attr2.size()) 
return false;
   191    for(rdn_iter p1 = attr1.begin(); p1 != attr1.end(); ++p1)
   193       std::multimap<OID, std::string>::const_iterator p2;
   194       p2 = attr2.find(p1->first);
   195       if(p2 == attr2.end())       
return false;
   196       if(p1->second > p2->second) 
return false;
   197       if(p1->second < p2->second) 
return true;
   208             const std::multimap<OID, std::string>& dn_info,
   209             ASN1_Tag string_type, 
const std::string& oid_str,
   210             bool must_exist = 
false)
   212    typedef std::multimap<OID, std::string>::const_iterator rdn_iter;
   215    const bool exists = (dn_info.find(oid) != dn_info.end());
   217    if(!exists && must_exist)
   221    std::pair<rdn_iter, rdn_iter> range = dn_info.equal_range(oid);
   223    for(rdn_iter j = range.first; j != range.second; ++j)
 bool x500_name_cmp(const std::string &name1, const std::string &name2)
bool operator!=(const OctetString &s1, const OctetString &s2)
DER_Encoder & raw_bytes(const byte val[], size_t len)
BER_Decoder & decode(bool &)
void encode_into(class DER_Encoder &) const
bool operator==(const OctetString &s1, const OctetString &s2)
void add_attribute(const std::string &, const std::string &)
BER_Decoder start_cons(ASN1_Tag, ASN1_Tag=UNIVERSAL)
MemoryVector< byte > get_bits() const
DER_Encoder & encode(bool b)
std::string value() const
std::string lookup(const OID &oid)
std::vector< std::string > get_attribute(const std::string &) const
BER_Decoder & raw_bytes(MemoryRegion< byte > &)
BER_Decoder & verify_end()
bool BOTAN_DLL operator<(const X509_Time &, const X509_Time &)
DER_Encoder & start_cons(ASN1_Tag type_tag, ASN1_Tag class_tag=UNIVERSAL)
static std::string deref_info_field(const std::string &)
void multimap_insert(std::multimap< K, V > &multimap, const K &key, const V &value)
std::multimap< OID, std::string > get_attributes() const
std::multimap< std::string, std::string > contents() const
void decode_from(class BER_Decoder &)