def test_x509_name(self): n = X509.X509_Name() n.C = 'US' # It seems this actually needs to be a real 2 letter country code n.SP = 'State or Province' n.L = 'locality name' n.O = 'orhanization name' n.OU = 'org unit' n.CN = 'common name' n.Email = '*****@*****.**' n.serialNumber = '1234' n.SN = 'surname' n.GN = 'given name' n.givenName = 'name given' assert len(n) == 11, len(n) tl = map(x509_name_entry2tuple, x509_name2list(n)) assert len(tl) == len(n), len(tl) x509_n = m2.x509_name_new() for o in map(tuple2x509_name_entry, tl): m2.x509_name_add_entry(x509_n, o._ptr(), -1, 0) o._pyfree = 0 # Take care of underlying object n1 = X509.X509_Name(x509_n) assert n.as_text() == n1.as_text(), n1.as_text()
def test_x509_name(self): n = X509.X509_Name() # It seems this actually needs to be a real 2 letter country code n.C = b'US' n.SP = b'State or Province' n.L = b'locality name' n.O = b'orhanization name' n.OU = b'org unit' n.CN = b'common name' n.Email = b'*****@*****.**' n.serialNumber = b'1234' n.SN = b'surname' n.GN = b'given name' n.givenName = b'name given' self.assertEqual(len(n), 11, len(n)) # Thierry: this call to list seems extraneous... tl = [x509_name_entry2tuple(x) for x in x509_name2list(n)] self.assertEqual(len(tl), len(n), len(tl)) x509_n = m2.x509_name_new() for o in [tuple2x509_name_entry(x) for x in tl]: m2.x509_name_add_entry(x509_n, o._ptr(), -1, 0) o._pyfree = 0 # Take care of underlying object n1 = X509.X509_Name(x509_n) self.assertEqual(n.as_text(), n1.as_text(), n1.as_text())
def __init__(self, x509_name=None, _pyfree=0): if x509_name is not None: assert m2.x509_name_type_check(x509_name), "'x509_name' type error" self.x509_name = x509_name self._pyfree = _pyfree else: self.x509_name = m2.x509_name_new() self._pyfree = 1
def __init__(self, x509_name=None, _pyfree=0): # type: (bytes, int) -> None """ :param x509_name: this should be OpenSSL X509_NAME binary :param _pyfree: """ if x509_name is not None: assert m2.x509_name_type_check(x509_name), "'x509_name' type error" self.x509_name = x509_name self._pyfree = _pyfree else: self.x509_name = m2.x509_name_new() self._pyfree = 1
def crt_subject(CN=None, Email=None, OU=None, O=None, L=None, ST=None, C=None): """Returns an X509_Name object populated with appropriate values. Subject fields are hierarchical. (hierarchy reads L->R in kwargs) If CN is not set, all fields other fields will be ignored, If OU is unset, O, L, ST, C are ignored... :type CN: string :param CN: Common Name (aka CA hostname) :type Email: string :param Email: Email address of certificate owner :type OU: string :param OU: Organisational Unit :type O: string :param O: Organisation :type L: string :param L: Location :type ST: string :param ST: State :type C: string :param C: Country :return: M2Crypto.X509.X509_Name """ #Email needs to be specified in two subject fields emailAddress = Email localvars = vars() info = X509.X509_Name(m2.x509_name_new()) Subject = namedtuple('Subject', 'emailAddress Email CN OU O L ST C') subject = Subject(**localvars) for name in subject._fields: value = getattr(subject, name) log.debug("NAME: %s, VAL: %s", name, value) info.add_entry_by_txt(field=name, entry=value, type=0x1000, len=-1, loc=-1, set=0) return info
def crt_subject(CN=None, Email=None, OU=None, O=None, L=None, ST=None, C=None): emailAddress = Email localvars = vars() info = X509.X509_Name(m2.x509_name_new()) Subject = namedtuple('Subject', 'emailAddress Email CN OU O L ST C') subject = Subject(**localvars) for name in subject._fields: value = getattr(subject, name) info.add_entry_by_txt(field=name, entry=value, type=0x1000, len=-1, loc=-1, set=0) return info