blob: 36e9fab3904ddb78a56646889a2c3ea246b1a5aa [file] [log] [blame]
Paul Kehrer016e08a2014-11-26 09:41:18 -10001X.509
2=====
3
Paul Kehrera9d78c12014-11-26 10:59:03 -10004.. currentmodule:: cryptography.x509
Paul Kehrer016e08a2014-11-26 09:41:18 -10005
6X.509 is an ITU-T standard for a `public key infrastructure`_. X.509v3 is
Paul Kehrera68fd332014-11-27 07:08:40 -10007defined in :rfc:`5280` (which obsoletes :rfc:`2459` and :rfc:`3280`). X.509
8certificates are commonly used in protocols like `TLS`_.
Paul Kehrer016e08a2014-11-26 09:41:18 -10009
Paul Kehrerb2de9482014-12-11 14:54:48 -060010
11Loading Certificates
12~~~~~~~~~~~~~~~~~~~~
Paul Kehrer016e08a2014-11-26 09:41:18 -100013
14.. function:: load_pem_x509_certificate(data, backend)
15
16 .. versionadded:: 0.7
17
Paul Kehrere76cd272014-12-14 19:00:51 -060018 Deserialize a certificate from PEM encoded data. PEM certificates are
19 base64 decoded and have delimiters that look like
20 ``-----BEGIN CERTIFICATE-----``.
Paul Kehrer016e08a2014-11-26 09:41:18 -100021
22 :param bytes data: The PEM encoded certificate data.
23
24 :param backend: A backend supporting the
25 :class:`~cryptography.hazmat.backends.interfaces.X509Backend`
26 interface.
27
Paul Kehrere76cd272014-12-14 19:00:51 -060028 :returns: An instance of :class:`~cryptography.x509.Certificate`.
Paul Kehrer016e08a2014-11-26 09:41:18 -100029
30.. function:: load_der_x509_certificate(data, backend)
31
32 .. versionadded:: 0.7
33
Paul Kehrere76cd272014-12-14 19:00:51 -060034 Deserialize a certificate from DER encoded data. DER is a binary format
Paul Kehrer92aac382014-12-15 16:25:28 -060035 and is commonly found in files with the ``.cer`` extension (although file
36 extensions are not a guarantee of encoding type).
Paul Kehrer016e08a2014-11-26 09:41:18 -100037
38 :param bytes data: The DER encoded certificate data.
39
40 :param backend: A backend supporting the
41 :class:`~cryptography.hazmat.backends.interfaces.X509Backend`
42 interface.
43
Paul Kehrere76cd272014-12-14 19:00:51 -060044 :returns: An instance of :class:`~cryptography.x509.Certificate`.
Paul Kehrer016e08a2014-11-26 09:41:18 -100045
46.. testsetup::
47
48 pem_data = b"""
49 -----BEGIN CERTIFICATE-----
50 MIIDfDCCAmSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJVUzEf
51 MB0GA1UEChMWVGVzdCBDZXJ0aWZpY2F0ZXMgMjAxMTEVMBMGA1UEAxMMVHJ1c3Qg
52 QW5jaG9yMB4XDTEwMDEwMTA4MzAwMFoXDTMwMTIzMTA4MzAwMFowQDELMAkGA1UE
53 BhMCVVMxHzAdBgNVBAoTFlRlc3QgQ2VydGlmaWNhdGVzIDIwMTExEDAOBgNVBAMT
54 B0dvb2QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCQWJpHYo37
55 Xfb7oJSPe+WvfTlzIG21WQ7MyMbGtK/m8mejCzR6c+f/pJhEH/OcDSMsXq8h5kXa
56 BGqWK+vSwD/Pzp5OYGptXmGPcthDtAwlrafkGOS4GqIJ8+k9XGKs+vQUXJKsOk47
57 RuzD6PZupq4s16xaLVqYbUC26UcY08GpnoLNHJZS/EmXw1ZZ3d4YZjNlpIpWFNHn
58 UGmdiGKXUPX/9H0fVjIAaQwjnGAbpgyCumWgzIwPpX+ElFOUr3z7BoVnFKhIXze+
59 VmQGSWxZxvWDUN90Ul0tLEpLgk3OVxUB4VUGuf15OJOpgo1xibINPmWt14Vda2N9
60 yrNKloJGZNqLAgMBAAGjfDB6MB8GA1UdIwQYMBaAFOR9X9FclYYILAWuvnW2ZafZ
61 XahmMB0GA1UdDgQWBBRYAYQkG7wrUpRKPaUQchRR9a86yTAOBgNVHQ8BAf8EBAMC
62 AQYwFwYDVR0gBBAwDjAMBgpghkgBZQMCATABMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
63 KoZIhvcNAQELBQADggEBADWHlxbmdTXNwBL/llwhQqwnazK7CC2WsXBBqgNPWj7m
64 tvQ+aLG8/50Qc2Sun7o2VnwF9D18UUe8Gj3uPUYH+oSI1vDdyKcjmMbKRU4rk0eo
65 3UHNDXwqIVc9CQS9smyV+x1HCwL4TTrq+LXLKx/qVij0Yqk+UJfAtrg2jnYKXsCu
66 FMBQQnWCGrwa1g1TphRp/RmYHnMynYFmZrXtzFz+U9XEA7C+gPq4kqDI/iVfIT1s
67 6lBtdB50lrDVwl2oYfAvW/6sC2se2QleZidUmrziVNP4oEeXINokU6T6p//HM1FG
68 QYw2jOvpKcKtWCSAnegEbgsGYzATKjmPJPJ0npHFqzM=
69 -----END CERTIFICATE-----
70 """.strip()
71
72.. doctest::
73
Paul Kehrercc8a26e2014-12-16 12:40:16 -060074 >>> from cryptography import x509
Paul Kehrer016e08a2014-11-26 09:41:18 -100075 >>> from cryptography.hazmat.backends import default_backend
Paul Kehrercc8a26e2014-12-16 12:40:16 -060076 >>> cert = x509.load_pem_x509_certificate(pem_data, default_backend())
Paul Kehrer016e08a2014-11-26 09:41:18 -100077 >>> cert.serial
78 2
79
Paul Kehrere76cd272014-12-14 19:00:51 -060080X.509 Certificate Object
81~~~~~~~~~~~~~~~~~~~~~~~~
Paul Kehrerb2de9482014-12-11 14:54:48 -060082
Paul Kehrere76cd272014-12-14 19:00:51 -060083.. class:: Certificate
Paul Kehrerb2de9482014-12-11 14:54:48 -060084
85 .. versionadded:: 0.7
86
87 .. attribute:: version
88
Paul Kehrere76cd272014-12-14 19:00:51 -060089 :type: :class:`~cryptography.x509.Version`
Paul Kehrerb2de9482014-12-11 14:54:48 -060090
Paul Kehrere76cd272014-12-14 19:00:51 -060091 The certificate version as an enumeration. Version 3 certificates are
92 the latest version and also the only type you should see in practice.
Paul Kehrerb2de9482014-12-11 14:54:48 -060093
Alex Gaynor89c4dc82014-12-16 16:49:33 -080094 :raises cryptography.x509.InvalidVersion: If the version in the
Alex Gaynor6d7ab4c2014-12-16 16:50:33 -080095 certificate is not a known
96 :class:`X.509 version <cryptography.x509.Version>`.
Paul Kehrer92aac382014-12-15 16:25:28 -060097
Paul Kehrercc8a26e2014-12-16 12:40:16 -060098 .. doctest::
99
100 >>> cert.version
101 <Version.v3: 2>
102
Paul Kehrerb2de9482014-12-11 14:54:48 -0600103 .. method:: fingerprint(algorithm)
104
105 :param algorithm: The
Paul Kehrer601278a2015-02-12 12:51:00 -0600106 :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`
Paul Kehrerb2de9482014-12-11 14:54:48 -0600107 that will be used to generate the fingerprint.
108
109 :return bytes: The fingerprint using the supplied hash algorithm as
110 bytes.
111
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600112 .. doctest::
113
114 >>> from cryptography.hazmat.primitives import hashes
115 >>> cert.fingerprint(hashes.SHA256())
Paul Kehrer78a81502014-12-16 14:47:52 -0600116 '\x86\xd2\x187Gc\xfc\xe7}[+E9\x8d\xb4\x8f\x10\xe5S\xda\x18u\xbe}a\x03\x08[\xac\xa04?'
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600117
Paul Kehrerb2de9482014-12-11 14:54:48 -0600118 .. attribute:: serial
119
120 :type: int
121
122 The serial as a Python integer.
123
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600124 .. doctest::
125
126 >>> cert.serial
127 2
128
Paul Kehrerb2de9482014-12-11 14:54:48 -0600129 .. method:: public_key()
130
131 :type:
Alex Stapletonf79c2312014-12-30 12:50:14 +0000132 :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey` or
Paul Kehrer45efdbc2015-02-12 10:58:22 -0600133 :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey` or
134 :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`
Paul Kehrerb2de9482014-12-11 14:54:48 -0600135
136 The public key associated with the certificate.
137
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600138 .. doctest::
139
Alex Stapletonf79c2312014-12-30 12:50:14 +0000140 >>> from cryptography.hazmat.primitives.asymmetric import rsa
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600141 >>> public_key = cert.public_key()
Alex Stapletonf79c2312014-12-30 12:50:14 +0000142 >>> isinstance(public_key, rsa.RSAPublicKey)
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600143 True
144
Paul Kehrerb2de9482014-12-11 14:54:48 -0600145 .. attribute:: not_valid_before
146
147 :type: :class:`datetime.datetime`
148
Paul Kehrer78a81502014-12-16 14:47:52 -0600149 A naïve datetime representing the beginning of the validity period for
150 the certificate in UTC. This value is inclusive.
Paul Kehrerb2de9482014-12-11 14:54:48 -0600151
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600152 .. doctest::
153
154 >>> cert.not_valid_before
155 datetime.datetime(2010, 1, 1, 8, 30)
156
Paul Kehrerb2de9482014-12-11 14:54:48 -0600157 .. attribute:: not_valid_after
158
159 :type: :class:`datetime.datetime`
160
Paul Kehrer78a81502014-12-16 14:47:52 -0600161 A naïve datetime representing the end of the validity period for the
162 certificate in UTC. This value is inclusive.
Paul Kehrerb2de9482014-12-11 14:54:48 -0600163
Paul Kehrercc8a26e2014-12-16 12:40:16 -0600164 .. doctest::
165
166 >>> cert.not_valid_after
167 datetime.datetime(2030, 12, 31, 8, 30)
168
Paul Kehrer719d5362015-01-01 20:03:52 -0600169 .. attribute:: issuer
170
171 .. versionadded:: 0.8
172
173 :type: :class:`Name`
174
175 The :class:`Name` of the issuer.
176
177 .. attribute:: subject
178
179 .. versionadded:: 0.8
180
181 :type: :class:`Name`
182
183 The :class:`Name` of the subject.
184
Paul Kehrer8802a5b2015-02-13 12:06:57 -0600185 .. attribute:: signature_hash_algorithm
Paul Kehrer56da2a52015-02-11 23:35:07 -0600186
Paul Kehrer8802a5b2015-02-13 12:06:57 -0600187 :type: :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`
Paul Kehrer56da2a52015-02-11 23:35:07 -0600188
Paul Kehrere612ec72015-02-16 14:33:35 -0600189 Returns the
Paul Kehrer71d40c62015-02-19 08:21:04 -0600190 :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` which
Paul Kehrer1a7ba872015-02-19 18:09:05 -0600191 was used in signing this certificate.
Paul Kehrer56da2a52015-02-11 23:35:07 -0600192
193 .. doctest::
194
Paul Kehrer8802a5b2015-02-13 12:06:57 -0600195 >>> from cryptography.hazmat.primitives import hashes
196 >>> isinstance(cert.signature_hash_algorithm, hashes.SHA256)
197 True
Paul Kehrer719d5362015-01-01 20:03:52 -0600198
199.. class:: Name
200
201 .. versionadded:: 0.8
202
Paul Kehrer53d8d492015-02-13 18:47:30 -0600203 An X509 Name is an ordered list of attributes. The object is iterable to
Paul Kehrerd21596e2015-02-14 09:17:26 -0600204 get every attribute or you can use :meth:`Name.get_attributes_for_oid` to
Paul Kehrer719d5362015-01-01 20:03:52 -0600205 obtain the specific type you want. Names are sometimes represented as a
Paul Kehrer53d8d492015-02-13 18:47:30 -0600206 slash or comma delimited string (e.g. ``/CN=mydomain.com/O=My Org/C=US`` or
207 ``CN=mydomain.com, O=My Org, C=US``).
Paul Kehrer719d5362015-01-01 20:03:52 -0600208
Paul Kehrer53d8d492015-02-13 18:47:30 -0600209 .. doctest::
Paul Kehrer719d5362015-01-01 20:03:52 -0600210
Paul Kehrer8b21a4a2015-02-14 07:56:36 -0600211 >>> len(cert.subject)
Paul Kehrer53d8d492015-02-13 18:47:30 -0600212 3
Paul Kehrer8b21a4a2015-02-14 07:56:36 -0600213 >>> for attribute in cert.subject:
214 ... print(attribute)
215 <NameAttribute(oid=<ObjectIdentifier(oid=2.5.4.6, name=countryName)>, value=u'US')>
216 <NameAttribute(oid=<ObjectIdentifier(oid=2.5.4.10, name=organizationName)>, value=u'Test Certificates 2011')>
217 <NameAttribute(oid=<ObjectIdentifier(oid=2.5.4.3, name=commonName)>, value=u'Good CA')>
Paul Kehrer719d5362015-01-01 20:03:52 -0600218
Paul Kehrere901d642015-02-11 18:50:58 -0600219 .. method:: get_attributes_for_oid(oid)
Paul Kehrer719d5362015-01-01 20:03:52 -0600220
Paul Kehrere901d642015-02-11 18:50:58 -0600221 :param oid: An :class:`ObjectIdentifier` instance.
Paul Kehrer719d5362015-01-01 20:03:52 -0600222
Paul Kehrere901d642015-02-11 18:50:58 -0600223 :returns: A list of :class:`NameAttribute` instances that match the
224 OID provided. If nothing matches an empty list will be returned.
Paul Kehrer719d5362015-01-01 20:03:52 -0600225
226 .. doctest::
227
Paul Kehrere901d642015-02-11 18:50:58 -0600228 >>> cert.subject.get_attributes_for_oid(x509.OID_COMMON_NAME)
229 [<NameAttribute(oid=<ObjectIdentifier(oid=2.5.4.3, name=commonName)>, value=u'Good CA')>]
Paul Kehrerb2de9482014-12-11 14:54:48 -0600230
Paul Kehrere76cd272014-12-14 19:00:51 -0600231.. class:: Version
Paul Kehrer016e08a2014-11-26 09:41:18 -1000232
233 .. versionadded:: 0.7
234
235 An enumeration for X.509 versions.
236
237 .. attribute:: v1
238
239 For version 1 X.509 certificates.
240
241 .. attribute:: v3
242
243 For version 3 X.509 certificates.
244
Paul Kehrer806bfb22015-02-02 17:05:24 -0600245.. class:: NameAttribute
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600246
247 .. versionadded:: 0.8
248
Paul Kehrer834d22f2015-02-06 11:01:07 -0600249 An X.509 name consists of a list of NameAttribute instances.
Paul Kehrer5b0a8d62015-01-30 20:05:55 -0600250
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600251 .. attribute:: oid
252
253 :type: :class:`ObjectIdentifier`
254
255 The attribute OID.
256
257 .. attribute:: value
258
Paul Kehrerd5852cb2015-01-30 08:25:23 -0600259 :type: :term:`text`
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600260
261 The value of the attribute.
262
263.. class:: ObjectIdentifier
264
265 .. versionadded:: 0.8
266
Paul Kehrer5b0a8d62015-01-30 20:05:55 -0600267 Object identifiers (frequently seen abbreviated as OID) identify the type
Paul Kehrer806bfb22015-02-02 17:05:24 -0600268 of a value (see: :class:`NameAttribute`).
Paul Kehrer5b0a8d62015-01-30 20:05:55 -0600269
Paul Kehrerd44f9a62015-02-04 14:47:34 -0600270 .. attribute:: dotted_string
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600271
272 :type: :class:`str`
273
Paul Kehrerfedf4f42015-02-06 11:22:07 -0600274 The dotted string value of the OID (e.g. ``"2.5.4.3"``)
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600275
Paul Kehrer8cf26422015-03-21 09:50:24 -0500276X.509 Extensions
277~~~~~~~~~~~~~~~~
278
279.. class:: Extension
280
281 .. versionadded:: 0.9
282
Paul Kehrer85894662015-03-22 13:19:31 -0500283 .. attribute:: oid
284
285 :type: :class:`ObjectIdentifier`
286
Paul Kehrer58b75692015-03-22 23:24:58 -0500287 The extension OID.
Paul Kehrer8cf26422015-03-21 09:50:24 -0500288
289 .. attribute:: critical
290
291 :type: bool
292
Paul Kehrer58b75692015-03-22 23:24:58 -0500293 Determines whether a given extension is critical or not. :rfc:`5280`
294 requires that "A certificate-using system MUST reject the certificate
295 if it encounters a critical extension it does not recognize or a
296 critical extension that contains information that it cannot process".
Paul Kehrer8cf26422015-03-21 09:50:24 -0500297
Paul Kehrer85894662015-03-22 13:19:31 -0500298 .. attribute:: value
299
300 Returns an instance of the extension type corresponding to the OID.
301
Paul Kehrer8cf26422015-03-21 09:50:24 -0500302.. class:: BasicConstraints
303
304 .. versionadded:: 0.9
305
Paul Kehrer85894662015-03-22 13:19:31 -0500306 Basic constraints is an X.509 extension type that defines whether a given
Paul Kehrer8cf26422015-03-21 09:50:24 -0500307 certificate is allowed to sign additional certificates and what path
Paul Kehrer85894662015-03-22 13:19:31 -0500308 length restrictions may exist. It corresponds to
309 :data:`OID_BASIC_CONSTRAINTS`.
Paul Kehrer8cf26422015-03-21 09:50:24 -0500310
311 .. attribute:: ca
312
313 :type: bool
314
315 Whether the certificate can sign certificates.
316
317 .. attribute:: path_length
318
Paul Kehrerfd1444c2015-03-21 19:47:05 -0500319 :type: int or None
Paul Kehrer8cf26422015-03-21 09:50:24 -0500320
321 The maximum path length for certificates subordinate to this
322 certificate. This attribute only has meaning if ``ca`` is true.
323 If ``ca`` is true then a path length of None means there's no
324 restriction on the number of subordinate CAs in the certificate chain.
325 If it is zero or greater then that number defines the maximum length.
326 For example, a ``path_length`` of 1 means the certificate can sign a
327 subordinate CA, but the subordinate CA is not allowed to create
Paul Kehrerfd1444c2015-03-21 19:47:05 -0500328 subordinates with ``ca`` set to true.
Paul Kehrer8cf26422015-03-21 09:50:24 -0500329
330
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600331Object Identifiers
332~~~~~~~~~~~~~~~~~~
333
Paul Kehrer4bb46492015-02-07 16:59:14 -0600334X.509 elements are frequently identified by :class:`ObjectIdentifier`
335instances. The following common OIDs are available as constants.
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600336
Paul Kehrer56da2a52015-02-11 23:35:07 -0600337Name OIDs
338~~~~~~~~~
339
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600340.. data:: OID_COMMON_NAME
341
Paul Kehrerfb5ac9e2015-02-07 16:29:37 -0600342 Corresponds to the dotted string ``"2.5.4.3"``. Historically the domain
343 name would be encoded here for server certificates. :rfc:`2818` deprecates
344 this practice and names of that type should now be located in a
Paul Kehrer4bb46492015-02-07 16:59:14 -0600345 SubjectAlternativeName extension. This OID is typically seen in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600346
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600347.. data:: OID_COUNTRY_NAME
348
Paul Kehrer4bb46492015-02-07 16:59:14 -0600349 Corresponds to the dotted string ``"2.5.4.6"``. This OID is typically seen
350 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600351
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600352.. data:: OID_LOCALITY_NAME
353
Paul Kehrer4bb46492015-02-07 16:59:14 -0600354 Corresponds to the dotted string ``"2.5.4.7"``. This OID is typically seen
355 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600356
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600357.. data:: OID_STATE_OR_PROVINCE_NAME
358
Paul Kehrer4bb46492015-02-07 16:59:14 -0600359 Corresponds to the dotted string ``"2.5.4.8"``. This OID is typically seen
360 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600361
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600362.. data:: OID_ORGANIZATION_NAME
363
Paul Kehrer4bb46492015-02-07 16:59:14 -0600364 Corresponds to the dotted string ``"2.5.4.10"``. This OID is typically seen
365 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600366
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600367.. data:: OID_ORGANIZATIONAL_UNIT_NAME
368
Paul Kehrer4bb46492015-02-07 16:59:14 -0600369 Corresponds to the dotted string ``"2.5.4.11"``. This OID is typically seen
370 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600371
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600372.. data:: OID_SERIAL_NUMBER
373
Paul Kehrerfb5ac9e2015-02-07 16:29:37 -0600374 Corresponds to the dotted string ``"2.5.4.5"``. This is distinct from the
375 serial number of the certificate itself (which can be obtained with
Paul Kehrer4bb46492015-02-07 16:59:14 -0600376 :func:`Certificate.serial`). This OID is typically seen in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600377
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600378.. data:: OID_SURNAME
379
Paul Kehrer4bb46492015-02-07 16:59:14 -0600380 Corresponds to the dotted string ``"2.5.4.4"``. This OID is typically seen
381 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600382
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600383.. data:: OID_GIVEN_NAME
384
Paul Kehrer4bb46492015-02-07 16:59:14 -0600385 Corresponds to the dotted string ``"2.5.4.42"``. This OID is typically seen
386 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600387
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600388.. data:: OID_TITLE
389
Paul Kehrer4bb46492015-02-07 16:59:14 -0600390 Corresponds to the dotted string ``"2.5.4.12"``. This OID is typically seen
391 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600392
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600393.. data:: OID_GENERATION_QUALIFIER
394
Paul Kehrer4bb46492015-02-07 16:59:14 -0600395 Corresponds to the dotted string ``"2.5.4.44"``. This OID is typically seen
396 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600397
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600398.. data:: OID_DN_QUALIFIER
399
Paul Kehrerfb5ac9e2015-02-07 16:29:37 -0600400 Corresponds to the dotted string ``"2.5.4.46"``. This specifies
401 disambiguating information to add to the relative distinguished name of an
Paul Kehrer4bb46492015-02-07 16:59:14 -0600402 entry. See :rfc:`2256`. This OID is typically seen in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600403
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600404.. data:: OID_PSEUDONYM
405
Paul Kehrer4bb46492015-02-07 16:59:14 -0600406 Corresponds to the dotted string ``"2.5.4.65"``. This OID is typically seen
407 in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600408
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600409.. data:: OID_DOMAIN_COMPONENT
410
Paul Kehrerfb5ac9e2015-02-07 16:29:37 -0600411 Corresponds to the dotted string ``"0.9.2342.19200300.100.1.25"``. A string
Paul Kehrer4bb46492015-02-07 16:59:14 -0600412 holding one component of a domain name. See :rfc:`4519`. This OID is
413 typically seen in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600414
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600415.. data:: OID_EMAIL_ADDRESS
416
Paul Kehrer4bb46492015-02-07 16:59:14 -0600417 Corresponds to the dotted string ``"1.2.840.113549.1.9.1"``. This OID is
418 typically seen in X.509 names.
Paul Kehrer858b9b72015-02-05 09:50:31 -0600419
Paul Kehrer56da2a52015-02-11 23:35:07 -0600420Signature Algorithm OIDs
421~~~~~~~~~~~~~~~~~~~~~~~~
422
Paul Kehrer1a7ba872015-02-19 18:09:05 -0600423.. data:: OID_RSA_WITH_MD5
Paul Kehrer56da2a52015-02-11 23:35:07 -0600424
425 Corresponds to the dotted string ``"1.2.840.113549.1.1.4"``. This is
426 an MD5 digest signed by an RSA key.
427
Paul Kehrer1a7ba872015-02-19 18:09:05 -0600428.. data:: OID_RSA_WITH_SHA1
Paul Kehrer56da2a52015-02-11 23:35:07 -0600429
430 Corresponds to the dotted string ``"1.2.840.113549.1.1.5"``. This is
431 a SHA1 digest signed by an RSA key.
432
Paul Kehrer1a7ba872015-02-19 18:09:05 -0600433.. data:: OID_RSA_WITH_SHA224
Paul Kehrer56da2a52015-02-11 23:35:07 -0600434
435 Corresponds to the dotted string ``"1.2.840.113549.1.1.14"``. This is
436 a SHA224 digest signed by an RSA key.
437
Paul Kehrer1a7ba872015-02-19 18:09:05 -0600438.. data:: OID_RSA_WITH_SHA256
Paul Kehrer56da2a52015-02-11 23:35:07 -0600439
440 Corresponds to the dotted string ``"1.2.840.113549.1.1.11"``. This is
441 a SHA256 digest signed by an RSA key.
442
Paul Kehrer1a7ba872015-02-19 18:09:05 -0600443.. data:: OID_RSA_WITH_SHA384
Paul Kehrer56da2a52015-02-11 23:35:07 -0600444
445 Corresponds to the dotted string ``"1.2.840.113549.1.1.12"``. This is
446 a SHA384 digest signed by an RSA key.
447
Paul Kehrer1a7ba872015-02-19 18:09:05 -0600448.. data:: OID_RSA_WITH_SHA512
Paul Kehrer56da2a52015-02-11 23:35:07 -0600449
450 Corresponds to the dotted string ``"1.2.840.113549.1.1.13"``. This is
451 a SHA512 digest signed by an RSA key.
452
453.. data:: OID_ECDSA_WITH_SHA224
454
455 Corresponds to the dotted string ``"1.2.840.10045.4.3.1"``. This is
456 a SHA224 digest signed by an ECDSA key.
457
458.. data:: OID_ECDSA_WITH_SHA256
459
460 Corresponds to the dotted string ``"1.2.840.10045.4.3.2"``. This is
461 a SHA256 digest signed by an ECDSA key.
462
463.. data:: OID_ECDSA_WITH_SHA384
464
465 Corresponds to the dotted string ``"1.2.840.10045.4.3.3"``. This is
466 a SHA384 digest signed by an ECDSA key.
467
468.. data:: OID_ECDSA_WITH_SHA512
469
470 Corresponds to the dotted string ``"1.2.840.10045.4.3.4"``. This is
471 a SHA512 digest signed by an ECDSA key.
472
473.. data:: OID_DSA_WITH_SHA1
474
475 Corresponds to the dotted string ``"1.2.840.10040.4.3"``. This is
476 a SHA1 digest signed by a DSA key.
477
478.. data:: OID_DSA_WITH_SHA224
479
480 Corresponds to the dotted string ``"2.16.840.1.101.3.4.3.1"``. This is
481 a SHA224 digest signed by a DSA key.
482
483.. data:: OID_DSA_WITH_SHA256
484
485 Corresponds to the dotted string ``2.16.840.1.101.3.4.3.2"``. This is
486 a SHA256 digest signed by a DSA key.
487
Paul Kehrer2bb94642015-03-21 09:54:17 -0500488Extension OIDs
489~~~~~~~~~~~~~~
490
491.. data:: OID_BASIC_CONSTRAINTS
492
493 Corresponds to the dotted string ``"2.5.29.19"``. The identifier for the
Paul Kehrer611d3d32015-03-22 13:31:18 -0500494 :class:`BasicConstraints` extension type.
Paul Kehrer2bb94642015-03-21 09:54:17 -0500495
Paul Kehrer56da2a52015-02-11 23:35:07 -0600496
Paul Kehrer912d3fb2015-01-29 11:19:22 -0600497Exceptions
498~~~~~~~~~~
499
Paul Kehrere76cd272014-12-14 19:00:51 -0600500.. class:: InvalidVersion
Paul Kehrera68fd332014-11-27 07:08:40 -1000501
502 This is raised when an X.509 certificate has an invalid version number.
Paul Kehrer016e08a2014-11-26 09:41:18 -1000503
Paul Kehrerd5cccf72014-12-15 17:20:33 -0600504 .. attribute:: parsed_version
505
Paul Kehrerbbffc402014-12-17 13:33:55 -0600506 :type: int
507
508 Returns the raw version that was parsed from the certificate.
Paul Kehrerd5cccf72014-12-15 17:20:33 -0600509
Paul Kehrer016e08a2014-11-26 09:41:18 -1000510
511.. _`public key infrastructure`: https://en.wikipedia.org/wiki/Public_key_infrastructure
Paul Kehrera68fd332014-11-27 07:08:40 -1000512.. _`TLS`: https://en.wikipedia.org/wiki/Transport_Layer_Security