aboutsummaryrefslogtreecommitdiff
path: root/openssl
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2006-08-11 19:47:35 +0000
committerRob Austein <sra@hactrn.net>2006-08-11 19:47:35 +0000
commitbf5efefd9fb96acc3768884d5626992dc90cc7c6 (patch)
tree30aeaeeba50ca9cf1894ba6b7189f79e3bedd270 /openssl
parent8079f07522b41af02816ce75585ab89095b07215 (diff)
Add notes on extension cache
svn path=/openssl/README; revision=143
Diffstat (limited to 'openssl')
-rw-r--r--openssl/README25
1 files changed, 25 insertions, 0 deletions
diff --git a/openssl/README b/openssl/README
index 15c0e4e4..62e24893 100644
--- a/openssl/README
+++ b/openssl/README
@@ -278,3 +278,28 @@ Random reminders and notes to myself:
unsorted, whine if they differ, walk the sorted list, then free the
sorted list. Requires the usual care to avoid memory leaks, but
nothing extraordinary.
+
+- My path validation stuff is not yet as efficient as it probably
+ ought to be. First off, it starts the check from the trust anchor
+ rather than from the target certificate, which is silly (I didn't
+ fully understand how X509_verify_cert() worked at the time -- of
+ course perhaps I'm kidding myself that I understand it now...). The
+ other thing that it could perhaps do more efficiently would be to
+ cache the decoded RFC 3779 extensions in the top-level X509
+ structure instead of expanding them every time. Doesn't much matter
+ for a trivial app like the "verify" CLI demo, but if we're going to
+ be doing multiple path checks involving the same certificate it'd
+ make more sense to expand them once via the same cache mechanism
+ that the library already uses for extensions like AKID. If we did
+ this, the code needing modification would be:
+
+ - crypto/x509/x509.h: add rfc3779_addr and rfc3779_asid fields to
+ struct x509_st.
+
+ - crypto/asn1/x_x509.c: add initialization and cleanup code to
+ x509_cb() (set new fields to NULL for ASN1_OP_NEW_POST, free new
+ fields for ASN1_OP_FREE_POST).
+
+ - crypto/x509v3/v3_purp.c: add code to x509v3_cache_extensions() to
+ call X509_get_ext_d2i() for our extensions and stash the result in
+ the corresponding struct x509_st fields (see the akid handling).