Example #1
0
    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()
Example #2
0
    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())
Example #3
0
    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()
Example #4
0
    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())
Example #5
0
 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
Example #6
0
 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
Example #8
0
 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
Example #9
0
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
Example #10
0
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