Beispiel #1
0
/*
* Add an attribute to a X509_DN
*/
void X509_DN::add_attribute(const OID& oid, const std::string& str)
   {
   if(str.empty())
      return;

   auto range = m_dn_info.equal_range(oid);
   for(auto i = range.first; i != range.second; ++i)
      if(i->second.value() == str)
         return;

   multimap_insert(m_dn_info, oid, ASN1_String(str));
   m_dn_bits.clear();
   }
Beispiel #2
0
/*
* Add an attribute to a X509_DN
*/
void X509_DN::add_attribute(const OID& oid, const std::string& str)
   {
   if(str == "")
      return;

   typedef std::multimap<OID, ASN1_String>::iterator rdn_iter;

   std::pair<rdn_iter, rdn_iter> range = dn_info.equal_range(oid);
   for(rdn_iter j = range.first; j != range.second; ++j)
      if(j->second.value() == str)
         return;

   multimap_insert(dn_info, oid, ASN1_String(str));
   dn_bits.clear();
   }
/*
* Decode a BER encoded ASN1_String
*/
void ASN1_String::decode_from(BER_Decoder& source)
{
    BER_Object obj = source.get_next_object();

    Character_Set charset_is;

    if(obj.type_tag == BMP_STRING)
        charset_is = UCS2_CHARSET;
    else if(obj.type_tag == UTF8_STRING)
        charset_is = UTF8_CHARSET;
    else
        charset_is = LATIN1_CHARSET;

    *this = ASN1_String(
                Charset::transcode(ASN1::to_string(obj), charset_is, LOCAL_CHARSET),
                obj.type_tag);
}