Index: net/data/verify_certificate_chain_unittest/README |
diff --git a/net/data/verify_certificate_chain_unittest/README b/net/data/verify_certificate_chain_unittest/README |
index 87a46987990f19acbb63f9f1afe99e9294f9fa45..073abd7fa9949f835f236bc262302cf7f0371451 100644 |
--- a/net/data/verify_certificate_chain_unittest/README |
+++ b/net/data/verify_certificate_chain_unittest/README |
@@ -1,79 +1,78 @@ |
This directory contains test data for verifying certificate chains. |
-It contains the following types of files: |
+Tests are grouped into directories that contain the keys, python to generate |
+chains, and test expectations. "DIR" is used as a generic placeholder below to |
+identify such a directory. |
=============================== |
-generate-*.py |
+DIR/generate-chains.py |
=============================== |
-Generates the file for an individual test case. If the python file was |
-named generate-XXX.py, then the corresponding output will be named |
-XXX.pem. |
+Python script that generates one or more ".pem" file containing a sequence of |
+CERTIFICATE blocks. In most cases it will generate a single chain called |
+"chain.pem". |
=============================== |
-generate-all.sh |
+DIR/keys/*.key |
=============================== |
-Runs all of the generate-*.py scripts and does some cleanup. |
+The keys used (as well as generated) by the .py file generate-chains.py. The |
+private keys shouldn't be needed to run the tests, however are useful when |
+re-generating the test data to have stable results (at least for signature |
+types which are deterministic, like RSASSA PKCS#1 which is used by most of the |
+certificates data). |
=============================== |
-keys/XXX/*.key |
+DIR/*.pem |
=============================== |
-The keys used/generated by test XXX. The private keys shouldn't be needed to run |
-the tests, however are useful when re-generating the test data to have stable |
-results (at least for signature types which are deterministic, like RSASSA |
-PKCS#1 which is used by most of the certificates data). |
+A sequence of CERTIFICATE blocks that was created by the generate-chains.py |
+script. (Although in a few cases there are manually created .pem files that |
+lack a generator script). |
=============================== |
-*.pem |
+DIR/*.test |
=============================== |
-Each .pem file describes the inputs for certificate chain verification, and the |
-expected result. These are the PEM blocks that each file contains and their |
-interpretation: |
- |
-CERTIFICATE: |
- |
-These PEM blocks describe the ordered chain of certificates starting from the |
-target certificate and progressing towards the trust anchor (but not including |
-the trust anchor). |
- |
- - There must be one or more such PEM blocks |
- - Its contents are a DER-encoded X.509 certificate |
- - The first block is the target certificate |
- - The (i+1)th CERTIFICATE is (allegedly) the one which issued the ith |
- CERTIFICATE. |
+A sequence of key-value pairs that identify the inputs to certificate |
+verification, as well as the expected outputs. The format is essentially a |
+newline separated sequence of key/value pairs: |
-TRUST_ANCHOR_{XXX}: |
+key: value\n |
-This PEM block describes the trust anchor to use when verifying the chain. |
-There are two possible names for this PEM block, which affect how it is |
-interpreted: TRUST_ANCHOR_CONSTRAINED or TRUST_ANCHOR_UNCONSTRAINED. |
+All keys must be specified by tests, although they can be in any order. |
+The possible keys are: |
- - There must be exactly one TRUST_ANCHOR_{XXX} block. |
- - Its contents are a DER-encoded X.509 certificate |
- - The subject and SPKI from the certificate define the trust anchor |
- - If the block was named TRUST_ANCHOR_CONSTRAINED, then any constraints on the |
- certificate are also considered normative when verifying paths. Otherwise |
- any standard extensions provided by the root certificate are not used during |
- path validation. |
+ "chain" - The value is a file path (relative to the test file) to a .pem |
+ containing the CERTIFICATE chain. |
-TIMESTAMP: |
+ "last_cert_trust" - The value identifies the trustedness of the last |
+ certificate in the chain (i.e. whether it is a trust anchor or not). This |
+ maps to the CertificateTrustType enum. Possible values are: |
+ "TRUSTED_ANCHOR" |
+ "TRUSTED_ANCHOR_WITH_CONSTRAINTS" |
+ "UNSPECIFIED" |
+ "DISTRUSTED" |
-This PEM block describes the time to use when verifying the chain. |
+ "utc_time" - A string encoding for the generalized time at which verification |
+ should be done. Example "150302120000Z" |
- - There must be exactly one such PEM block |
- - Its contents are a DER-encoded UTCTime. |
+ "key_purpose" - The expected EKU to use when verifying. Maps to |
+ KeyPurpose enum. Possible values are: |
+ "ANY_EKU" |
+ "SERVER_AUTH" |
+ "CLIENT_AUTH" |
-VERIFY_RESULT: |
+ "errors" - This has special parsing rules: it is interpreted as the |
+ final key in the file. All lines after "errors:\n" are read as being the |
+ error string (this allows embedding newlines in it). |
-This PEM block describes the expected result from verifying the path. |
+Additionally, it is possible to add python-style comments by starting a line |
+with "#". |
- - There must be exactly one such PEM block |
- - Its contents are a string with value of either "SUCCESS" or "FAIL" |
- |
-ERRORS: |
+=============================== |
+generate-all.sh |
+=============================== |
-This PEM block is a pretty-printed textual dump of all the errors, as given by |
-CertErrors::ToDebugString(). |
+Runs all of the generate-chains.py scripts and cleans up the temp files |
+afterwards. |