This directory contains various certificates for use with SSL-related
unit tests.

===== Real-world certificates that need manual updating
- google.binary.p7b
- google.chain.pem
- google.pem_cert.p7b
- google.pem_pkcs7.p7b
- google.pkcs7.p7b
- google.single.der
- google.single.pem : Certificates for testing parsing of different formats.

- mit.davidben.der : An expired MIT client certificate.

- foaf.me.chromium-test-cert.der : A client certificate for a FOAF.ME identity
     created for testing.

- google_diginotar.pem
- diginotar_public_ca_2025.pem : A certificate chain for the regression test
      of http://crbug.com/94673

- salesforce_com_test.pem
- verisign_intermediate_ca_2011.pem
- verisign_intermediate_ca_2016.pem : Certificates for testing two
     X509Certificate objects that contain the same server certificate but
     different intermediate CA certificates.  The two intermediate CA
     certificates actually represent the same intermediate CA but have
     different validity periods.

- ndn.ca.crt: "New Dream Network Certificate Authority" root certificate.
     This is an X.509 v1 certificate that omits the version field. Used to
     test that the certificate version gets the default value v1.

- ct-test-embedded-cert.pem
- ct-test-embedded-with-intermediate-chain.pem
- ct-test-embedded-with-intermediate-preca-chain.pem
- ct-test-embedded-with-preca-chain.pem
     Test certificate chains for Certificate Transparency: Each of these
     files contains a leaf certificate as the first certificate, which has
     embedded SCTs, followed by the issuer certificates chain.
     All files are from the src/test/testdada directory in
     https://code.google.com/p/certificate-transparency/

- leaf_from_known_root.pem : A certificate issued by a public trust anchor,
     used for CertVerifyProcInternalTest.TestKnownRoot. Using for other
     purposes is not recommended. This needs to be updated periodically so the
     server name the cert is valid for may change.

- lets-encrypt-dst-x3-root.pem: A chain that ends in the Lets encrypt DST X3
  root (https://crt.sh/?id=8395). Has the same leaf as
  lets-encrypt-isrg-x1-root.pem.
- lets-encrypt-isrg-x1-root.pem: A chain that ends in the Lets encrypt ISRG X1
  root (https://crt.sh/?id=9314791). Has the same leaf as
  lets-encrypt-dst-x3-root.pem.

===== Manually generated certificates
- client.p12 : A PKCS #12 file containing a client certificate and a private
     key created for testing.  The password is "12345".

- client-nokey.p12 : A PKCS #12 file containing a client certificate (the same
     as the one in client.p12) but no private key. The password is "12345".

- client-empty-password.p12 : A PKCS #12 file containing an unencrypted client
     certificate and a encrypted private key.  The password is the empty string,
     encoded as two zero bytes.  (PKCS#12 passwords are encoded as
     NUL-terminated UTF-16.)

- client-null-password.p12 : A PKCS #12 file containing an unencrypted client
     certificate and a encrypted private key.  The password is the empty string,
     encoded as the empty byte string.

- unittest.selfsigned.der : A self-signed certificate generated using private
     key in unittest.key.bin. The common name is "unittest".

- unittest.key.bin : private key stored unencrypted.

- multivalue_rdn.pem : A regression test for http://crbug.com/101009. A
     certificate with all of the AttributeTypeAndValues stored within a single
     RelativeDistinguishedName, rather than one AVA per RDN as normally seen.

- unescaped.pem : Regression test for http://crbug.com/102839. Contains
     characters such as '=' and '"' that would normally be escaped when
     converting a subject/issuer name to their stringized form.

- websocket_cacert.pem : The testing root CA for testing WebSocket client
     certificate authentication.
     This file is used in SSLUITest.TestWSSClientCert.

- websocket_client_cert.p12 : A PKCS #12 file containing a client certificate
     and a private key created for WebSocket testing. The password is "".
     This file is used in SSLUITest.TestWSSClientCert.

- no_subject_common_name_cert.pem: Used to test the function that generates a
  NSS certificate nickname for a user certificate. This certificate's Subject
  field doesn't have a common name.

- ct-test-embedded-with-uids.pem: A certificate with embedded SCT and
  issuer/subject unique IDs. This certificate should only be used in parsing
  tests and otherwise kept fixed. The signature, etc., are intentionally
  invalid.

- name_constrained_key.pem
  The private key matching the public_key_hash of the kDomainsTest constraint
  in CertVerifyProc::HasNameConstraintsViolation.

===== From net/data/ssl/scripts/generate-quic-chain.sh
- quic-chain.pem
- quic-leaf-cert.key
- quic-leaf-cert.key.pkcs8.pem
- quic-root.pem
     These certificates are used by integration tests that use QUIC.

- quic-leaf-cert.key.sct
     This isn't generated and just contains a simple text file (the contents
     don't actually matter, just the presence of the file).

===== From net/data/ssl/scripts/generate-test-certs.sh
- expired_cert.pem
- ok_cert.pem
- root_ca_cert.pem
    These certificates are the common certificates used by the Python test
    server for simulating HTTPS connections.

- intermediate_ca_cert.pem
- ok_cert_by_intermediate.pem
    These certificates simulate a more common chain of root (root_ca_cert.pem)
    to intermediate (intermediate_ca_cert.pem) to leaf
    (ok_cert_by_intermediate.pem).

- wildcard_.pem
    A certificate and private key valid for *.example.org, used in various
    net unit tests.

- test_names.pem
    A certificate and private key valid for a number of test names. See
    [test_names] in ee.cnf. Other names may be added as needed.

- bad_validity.pem
    A certificate and private key only valid on 0001-01-01. Windows refuses to
    parse this certificate.

- spdy_pooling.pem : Used to test the handling of spdy IP connection pooling

- subjectAltName_sanity_check.pem : Used to test the handling of various types
     within the subjectAltName extension of a certificate.

- policies_sanity_check.pem : Used to test the parsing of various types of
     certificatePolicies extension policyQualifiers.

- punycodetest.pem : A test self-signed server certificate with punycode name.
     The common name is "xn--wgv71a119e.com" (日本語.com)

- sha1_2016.pem
    Used to test the handling of SHA1 certificates expiring in 2016.

- 10_year_validity.pem
- 11_year_validity.pem
- 39_months_after_2015_04.pem
- 40_months_after_2015_04.pem
- 60_months_after_2012_07.pem
- 61_months_after_2012_07.pem
- pre_br_validity_bad_121.pem
- pre_br_validity_bad_2020.pem
- pre_br_validity_ok.pem
- start_after_expiry.pem
    Certs to test that the maximum validity durations set by the CA/Browser
    Forum Baseline Requirements are enforced.

- may_2018.pem
   An 825-day certificate issued on May 1, 2018, the official start of
   enforcement requiring Certificate Transparency for new certificates. This
   certificate does not have any embedded SCTs.

- x509_verify_results.chain.pem : A simple certificate chain used to test that
    the correctly ordered, filtered certificate chain is returned during
    verification, regardless of the order in which the intermediate/root CA
    certificates are provided.

- ev_test.pem
- ev_test_state_only.pem
     Certificates for testing EV display (including regression test for
     https://crbug.com/1069113).

===== From net/data/ssl/scripts/generate-test-keys.sh
- rsa-{768,1024,2048}-{1..3}.key
- ec-prime256v1-{1..3}.key
     Pre-generated keys of various types/sizes.
     Useful for tests that generate RSA certificates with CertBuilder without
     having to pay the cost of generating RSA keys at runtime. Multiple keys
     of each size are provided. (EC keys are cheap to generate at runtime, but
     having some as files simplifies test logic in cases where the test is
     reading both RSA and EC keys from files.)

===== From net/data/ssl/scripts/generate-redundant-test-chains.sh
- redundant-validated-chain.pem
- redundant-server-chain.pem
- redundant-validated-chain-root.pem

     Two chains, A -> B -> C -> D and A -> B -> C2 (C and C2 share the same
     public key) to test that SSLInfo gets the reconstructed, re-ordered
     chain instead of the chain as served. See
     SSLClientSocketTest.VerifyReturnChainProperlyOrdered in
     net/socket/ssl_client_socket_unittest.cc. These chains are valid until
     26 Feb 2022 and are generated by
     net/data/ssl/scripts/generate-redundant-test-chains.sh.

===== From net/data/ssl/scripts/generate-client-certificates.sh
- client_1.pem
- client_1.key
- client_1.pk8
- client_1_ca.pem
- client_2.pem
- client_2.key
- client_2.pk8
- client_2_ca.pem
- client_3.pem
- client_3.key
- client_3.pk8
- client_3_ca.pem
- client_4.pem
- client_4.key
- client_4.pk8
- client_4_ca.pem
- client_5.pem
- client_5.key
- client_5.pk8
- client_5_ca.pem
- client_6.pem
- client_6.key
- client_6.pk8
- client_6_ca.pem
- client_root_ca.pem
     This is a set of files used to unit test SSL client certificate
     authentication.
     - client_1_ca.pem and client_2_ca.pem are the certificates of
       two distinct signing CAs.
     - client_1.pem and client_1.key correspond to the certificate and
       private key for a first certificate signed by client_1_ca.pem.
     - client_2.pem and client_2.key correspond to the certificate and
       private key for a second certificate signed by client_2_ca.pem.
     - each .pk8 file contains the same key as the corresponding .key file
       as PKCS#8 PrivateKeyInfo in DER encoding.
     - client_3.pem is nearly identical to client_2.pem, except it is used
       to test wifi EAP-TLS authentication so it uses a different set
       of X509v3 extensions.  Specifically it includes two Subject
       Alternative Name fields recognized by Chrome OS.
     - client_4.pem is similar to client_2.pem but is a P-256 ECDSA key rather
       than RSA.
     - client_5.pem is similar to client_2.pem but is a P-384 ECDSA key rather
       than RSA.
     - client_6.pem is similar to client_2.pem but is a P-521 ECDSA key rather
       than RSA.
     - client_root_ca.pem is the CA certificate which signed client_*_ca.pem.

===== From net/data/ssl/scripts/generate-bad-eku-certs.sh
- eku-test-root.pem
- non-crit-codeSigning-chain.pem
- crit-codeSigning-chain.pem
     Two code-signing certificates (eKU: codeSigning; eKU: critical,
     codeSigning) which we use to test that clients are making sure that web
     server certs are checked for correct eKU fields (when an eKU field is
     present). Since codeSigning is not valid for web server auth, the checks
     should fail.

===== From net/data/ssl/scripts/generate-multi-root-test-chains.sh
- multi-root-chain1.pem
- multi-root-chain2.pem
     Two chains, A -> B -> C -> D and A -> B -> C2 -> E (C and C2 share the
     same public key) to test that certificate validation caching does not
     interfere with the chain_verify_callback used by CertVerifyProcChromeOS.
     See CertVerifyProcChromeOSTest.

===== From net/data/ssl/scripts/generate-multi-root-keychain.sh
- multi-root.keychain: An OSX Keychain containing the generated
  certificates multi-root-*-by-*.pem

===== From net/data/ssl/scripts/generate-duplicate-cn-certs.sh
- duplicate_cn_1.p12
- duplicate_cn_1.pem
- duplicate_cn_2.p12
- duplicate_cn_2.pem
     Two certificates from the same issuer that share the same common name,
     but have distinct subject names (namely, their O fields differ). NSS
     requires that certificates have unique nicknames if they do not share the
     same subject, and these certificates are used to test that the nickname
     generation algorithm generates unique nicknames.
     The .pem versions contain just the certs, while the .p12 versions contain
     both the cert and a private key, since there are multiple ways to import
     certificates into NSS.

===== From net/data/ssl/scripts/generate-self-signed-certs.sh
- self-signed-invalid-name.pem
- self-signed-invalid-sig.pem
     Two "self-signed" certificates with mismatched names or an invalid
     signature, respectively.

===== From net/data/ssl/scripts/generate-key-usage-certs.sh
- key_usage_rsa_no_extension.pem
- key_usage_rsa_keyencipherment.pem
- key_usage_rsa_digitalsignature.pem
- key_usage_rsa_both.pem
     Self-signed RSA certificates with various combinations of keyUsage
     flags. Their private key is key_usage_rsa.key.

- key_usage_p256_no_extension.pem
- key_usage_p256_keyagreement.pem
- key_usage_p256_digitalsignature.pem
- key_usage_p256_both.pem
     Self-signed P-256 certificates with various combinations of keyUsage
     flags. Their private key is key_usage_p256.key.
