aboutsummaryrefslogtreecommitdiff
path: root/openssl
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2012-04-16 20:32:12 +0000
committerRob Austein <sra@hactrn.net>2012-04-16 20:32:12 +0000
commit2d26c4f5e632286cf6a75e20229f95fa799f5147 (patch)
treee9179438e7d39a02ddb655bec818bdcb5a203e77 /openssl
parent6f45f4a6b5a65ab12db71623877ce075f218e98c (diff)
Clean up README files. Mostly this means changing them to pointers to
the real consolidated documentation. Delete old Doxygen-based rpkid manual and stuff that went with it, while retaining ability to generate Doxygen manual of internals for the libraries. This closes #232. svn path=/trunk/; revision=4424
Diffstat (limited to 'openssl')
-rw-r--r--openssl/README179
1 files changed, 11 insertions, 168 deletions
diff --git a/openssl/README b/openssl/README
index e65804ec..2f5f2cf2 100644
--- a/openssl/README
+++ b/openssl/README
@@ -9,6 +9,15 @@ do:
./config enable-rfc3779
+The normal build process for the RPKI toolkit detects whether it needs
+its own copy of the OpenSSL libraries and builds one from the sources
+here if necessary. In theory, this is all automatic and you never
+need to do anything about it, at least on platforms where we've tested
+this code. If you're on a new platform and this doesn't just work,
+please report the problem, but if it's 03:00 and you need this to work
+-now-, start by looking at ../configure.ac, or just try building
+OpenSSL yourself here with the RFC 3779 code enabled.
+
The next section of this file describes the openssl.conf syntax
associated with the RFC 3779 extensions; the rest is primarily of
historical interest at this point.
@@ -215,169 +224,6 @@ Other random notes:
-The June meeting at APNIC came up with a list of desired OpenSSL
-primitives (transcribed by Geoff, thanks!). Current status, with
-notes and questions at the end.
-
-1. Read a resource certificate and print nominated certificate
- field(s) (CLI command) or access data structure elements from the
- certificate (API)
-
- Status: Done
-
- CLI: openssl x509 -text
-
- API: i2r_ASIdentifiers(), i2r_IPAddrBlocks(), but in practice you'd
- rarely call these directly -- they're hooked into OpenSSL's
- X509V3_EXT_METHOD dispatch mechanism and cached by
- x509v3_cache_extensions(), so you'd call X509_get_ext_d2i() or just
- look for decoded data structures hanging off the X509 structure.
-
-2. Verify a resource certificate (use the existing openssl interface
- which provides as inputs a) a set of 'trusted' certs and CRLs and
- b) a set of untrusted certs and CRLs and c) the cert to be
- verified. output is YES or NO and both a CLI and an API interface
- is desired
-
- Status: Done, for some definition of done (CLI program remains a
- crock, but I don't think I've made it worse than it already was).
-
- CLI: openssl verify
-
- API: Pre-existing X509_verify_cert() function now checks RFC 3779
- path validation, which in turn checks for well formed extensions.
-
-3. 3779_canonicalise - read in a data structure of a resource set and
- produce as output the 3779 canonical form of the resource set - the
- CLI interface will print this to stdout and the API interface will
- pass a ref to a data structure (or fill in a data struct or
- whatever makes sense!)
-
- Status: Done.
-
- CLI: openssl x509, openssl req, .... Called automatically as part
- of anything that reads RFC 3779 extensions from openssl.conf.
-
- API: v3_asid_canonize(), v3_addr_canonize().
-
-4. 3779_cmp reads in 2 x 3779_canonicalised data sets and outputs a
- comparison = EQUAL is the two are equal, or =SUBSET if data1 is a
- strict subset of data2, or = NOT in all other cases (CLI or API)
- (EQUAL, SUBSET, NOT)
-
- Status: API code written, not fully tested. No CLI. API functions
- test whether an extension uses inheritance, and whether one
- extension is a (possibly improper) subset of another. Subset test
- fails if either extension uses inheritance.
-
- API: v3_asid_inherits(), v3_addr_inherits(), v3_asid_subset(),
- v3_addr_subset().
-
-5. is_3379_canonical tests a single data set and returns CANONICAL if
- the resource is formatted according to 3779 or NOT is otherwise
-
- Status: Done.
-
- CLI: openssl verify calls this during path validation. No separate
- program to perform just this function, would not be hard to write
- one if it were needed.
-
- API: v3_asid_is_canonical(), v3_addr_is_canonical().
-
-6. is_in_cert takes a certificate and a resource set description and
- checks if the certificate 'covers' the resource set The outpouts
- are EQUAL if the resource cert precisely matches the resource set,
- SUBSET if the resource set is a subset of the certificate resource
- list, or NOT otherwise
-
- Status: Done.
-
- API: v3_asid_validate_resource_set(), v3_addr_validate_resource_set().
- These return true if a certificate chain covers a resource set.
- "Resource sets" are represented as the C form of the appropriate
- extension, with the additional constraint that the resource set
- must not use inheritance; this constraint is enforced by the code
- (ie, using one of these functions on a resource set that specifies
- inheritance will always return false regardless of the contents of
- the chain).
-
- CLI: resource-set-test. Use the Source, Luke.
-
-7. generate_resource_certificate generates a resource certificate -
- I'm not sure I understand what the inputs are to be here - perhaps
- a data structure of the fields and values, but this should be
- confirmed. the output is a DER object (or pem, or either
- selectable?)
-
- Status: Done, for some definition of done.
-
- CLI: openssl x509, openssl ca.
-
- API: Preexisting OpenSSL functions, augmented by method routines
- allowing OpenSSL to read and write RFC 3779 extensions.
-
-8. generate a certificate request (previous note on which certificate
- request format to use is on the table)
-
- Status: Done, for some definition of done, for OpenSSL's native
- request format (PKCS10 DER, with or without Base64 "PEM" wrapper).
-
- CLI: openssl x509, openssl req.
-
- API: Preexisting OpenSSL functions, augmented by method routines
- allowing OpenSSL to read and write RFC 3779 extensions.
-
-9. process a certificate request and say yes / no on whether the
- request is well formed.
-
- Status: Request processing within OpenSSL looks to be a mess, with
- entirely too much of it happening in applications rather than the
- library. Other API functions exist to test whether an extension is
- in canonical form, etcetera. Path validation can only be done in
- context of a particular certificate chain, which is probably out of
- scope for this primative.
-
-10. process a certificate request and generate a certificate in
- response.
-
- Status: OpenSSL code is a mess, see (9). Generating certificate
- based on a certificate request is prexisting functionality; new
- code adds ability to process RFC 3779. If task here includes path
- validation with respect to signer's certificate chain, would
- require nontrivial changes to the OpenSSL CLI programs that sign
- requests, as none of them currently even look for certificate
- chains for the signer.
-
- API: Primitive #6 (above) extended to accept argument indicating
- whether inheritance is allowed, so that primitive #6 can be used to
- perform path validation on extensions pulled from a request.
-
-Notes:
-
-- "For some definition of done": opinions vary on whether the existing
- OpenSSL CLI tools are adaquate for the purposes for which people use
- them. For purposes of the above discussion, I'm assuming that they
- are, and that my task was just to teach the same tools to deal with
- the RFC 3779 extensions.
-
-- It turns out that the code I've written so far never needs to ask
- whether two extension data sets are equal, just whether one is a
- subset (possibly improper) of the other. Checking for equality is
- a somewhat different test, so rather than trying to combine the two,
- I might just provide separate functions that test for equality.
-
-
-
-I've pulled the stuff in trunk/ up to OpenSSL 0.9.8d so that people
-building against this will not be missing the security updates from
-the recent OpenSSL vulnerability firedrills. In theory nothing in the
-RPKI code was touched by this; the existing RPKI patch against 0.9.8b
-applies without changes against 0.9.8c and 0.9.8d.
-
-Please report any problems.
-
-
-
The RFC 3997 patches were committed to the OpenSSL Project's CVS
repository on 27 November 2006, on both HEAD and the
OpenSSL_0_9_8-stable branch (thanks, Ben!), and shipped with OpenSSL
@@ -386,8 +232,5 @@ easy:
./config enable-rfc3779
-At some point I will remove ("svn rm") all the old OpenSSL stuff from
-this repository, since it's not really needed anymore. If it's gone
-when you read this and you need it for some reason, it was still
-present as of revision 645 of the subvert-rpki.hactrn.net repository,
-which should be enough information to let you pull it from subversion.
+If for some reason you need the modified OpenSSL source tree that used
+to be in this directory, look at subversion revision 645.