django_ca.subject - X509 Subject

class django_ca.subject.Subject(subject=None)[source]

Convenience class to handle X509 Subjects.

This class accepts a variety of values and intelligently parses them:

>>> Subject('/CN=example.com')
Subject("/CN=example.com")
>>> Subject({'CN': 'example.com'})
Subject("/CN=example.com")
>>> Subject([('CN', 'example.com'), ])
Subject("/CN=example.com")

In most respects, this class handles like a dict:

>>> s = Subject('/CN=example.com')
>>> 'CN' in s
True
>>> s.get('OU', 'Default OU')
'Default OU'
>>> s.setdefault('C', 'AT')
>>> s['C'], s['CN']
('AT', 'example.com')
fields

This subject as a list of NameOID instances.

>>> list(Subject('/C=AT/CN=example.com').fields)  # doctest: +NORMALIZE_WHITESPACE
[(<ObjectIdentifier(oid=2.5.4.6, name=countryName)>, 'AT'),
 (<ObjectIdentifier(oid=2.5.4.3, name=commonName)>, 'example.com')]
name

This subject as x509.Name.

>>> Subject('/C=AT/CN=example.com').name  # doctest: +NORMALIZE_WHITESPACE
<Name([<NameAttribute(oid=<ObjectIdentifier(oid=2.5.4.6, name=countryName)>, value='AT')>,
       <NameAttribute(oid=<ObjectIdentifier(oid=2.5.4.3, name=commonName)>, value='example.com')>])>