Standards related to OpenSSL
============================

[Please, this is currently a draft.  I made a first try at finding
 documents that describe parts of what OpenSSL implements.  There are
 big gaps, and I've most certainly done something wrong.  Please
 correct whatever is...  Also, this note should be removed when this
 file is reaching a somewhat correct state.        -- Richard Levitte]


All pointers in here will be either URL's or blobs of text borrowed
from miscellaneous indexes, like rfc-index.txt (index of RFCs),
1id-index.txt (index of Internet drafts) and the like.

To find the latest possible RFCs, it's recommended to either browse
ftp://ftp.isi.edu/in-notes/ or go to http://www.rfc-editor.org/ and
use the search mechanism found there.
To find the latest possible Internet drafts, it's recommended to
browse ftp://ftp.isi.edu/internet-drafts/.
To find the latest possible PKCS, it's recommended to browse
http://www.rsasecurity.com/rsalabs/pkcs/.


Implemented:
------------

These are documents that describe things that are implemented (in
whole or at least great parts) in OpenSSL.

1319 The MD2 Message-Digest Algorithm. B. Kaliski. April 1992.
     (Format: TXT=25661 bytes) (Status: INFORMATIONAL)

1320 The MD4 Message-Digest Algorithm. R. Rivest. April 1992. (Format:
     TXT=32407 bytes) (Status: INFORMATIONAL)

1321 The MD5 Message-Digest Algorithm. R. Rivest. April 1992. (Format:
     TXT=35222 bytes) (Status: INFORMATIONAL)

2246 The TLS Protocol Version 1.0. T. Dierks, C. Allen. January 1999.
     (Format: TXT=170401 bytes) (Status: PROPOSED STANDARD)

2268 A Description of the RC2(r) Encryption Algorithm. R. Rivest.
     January 1998. (Format: TXT=19048 bytes) (Status: INFORMATIONAL)

2314 PKCS 10: Certification Request Syntax Version 1.5. B. Kaliski.
     March 1998. (Format: TXT=15814 bytes) (Status: INFORMATIONAL)

2315 PKCS 7: Cryptographic Message Syntax Version 1.5. B. Kaliski.
     March 1998. (Format: TXT=69679 bytes) (Status: INFORMATIONAL)

2437 PKCS #1: RSA Cryptography Specifications Version 2.0. B. Kaliski,
     J. Staddon. October 1998. (Format: TXT=73529 bytes) (Obsoletes
     RFC2313) (Status: INFORMATIONAL)

2459 Internet X.509 Public Key Infrastructure Certificate and CRL
     Profile. R. Housley, W. Ford, W. Polk, D. Solo. January 1999.
     (Format: TXT=278438 bytes) (Status: PROPOSED STANDARD)

PKCS#8: Private-Key Information Syntax Standard

PKCS#12: Personal Information Exchange Syntax Standard, version 1.0.

2560 X.509 Internet Public Key Infrastructure Online Certificate
     Status Protocol - OCSP. M. Myers, R. Ankney, A. Malpani, S. Galperin,
     C. Adams. June 1999. (Format: TXT=43243 bytes) (Status: PROPOSED
     STANDARD)


Related:
--------

These are documents that are close to OpenSSL, for example the
STARTTLS documents.

1421 Privacy Enhancement for Internet Electronic Mail: Part I: Message
     Encryption and Authentication Procedures. J. Linn. February 1993.
     (Format: TXT=103894 bytes) (Obsoletes RFC1113) (Status: PROPOSED
     STANDARD)

1422 Privacy Enhancement for Internet Electronic Mail: Part II:
     Certificate-Based Key Management. S. Kent. February 1993. (Format:
     TXT=86085 bytes) (Obsoletes RFC1114) (Status: PROPOSED STANDARD)

1423 Privacy Enhancement for Internet Electronic Mail: Part III:
     Algorithms, Modes, and Identifiers. D. Balenson. February 1993.
     (Format: TXT=33277 bytes) (Obsoletes RFC1115) (Status: PROPOSED
     STANDARD)

1424 Privacy Enhancement for Internet Electronic Mail: Part IV: Key
     Certification and Related Services. B. Kaliski. February 1993.
     (Format: TXT=17537 bytes) (Status: PROPOSED STANDARD)

2256 A Summary of the X.500(96) User Schema for use with LDAPv3. M.
     Wahl. December 1997. (Format: TXT=32377 bytes) (Status: PROPOSED
     STANDARD)

2487 SMTP Service Extension for Secure SMTP over TLS. P. Hoffman.
     January 1999. (Format: TXT=15120 bytes) (Status: PROPOSED STANDARD)

2585 Internet X.509 Public Key Infrastructure Operational Protocols:
     FTP and HTTP. R. Housley, P. Hoffman. May 1999. (Format: TXT=14813
     bytes) (Status: PROPOSED STANDARD)

2595 Using TLS with IMAP, POP3 and ACAP. C. Newman. June 1999.
     (Format: TXT=32440 bytes) (Status: PROPOSED STANDARD)

2712 Addition of Kerberos Cipher Suites to Transport Layer Security
     (TLS). A. Medvinsky, M. Hur. October 1999. (Format: TXT=13763 bytes)
     (Status: PROPOSED STANDARD)

2817 Upgrading to TLS Within HTTP/1.1. R. Khare, S. Lawrence. May
     2000. (Format: TXT=27598 bytes) (Updates RFC2616) (Status: PROPOSED
     STANDARD)

2818 HTTP Over TLS. E. Rescorla. May 2000. (Format: TXT=15170 bytes)
     (Status: INFORMATIONAL)

  "Securing FTP with TLS", 01/27/2000, <draft-murray-auth-ftp-ssl-05.txt>  
 

To be implemented:
------------------

These are documents that describe things that are planed to be
implemented in the hopefully short future.

2712 Addition of Kerberos Cipher Suites to Transport Layer Security
     (TLS). A. Medvinsky, M. Hur. October 1999. (Format: TXT=13763 bytes)
     (Status: PROPOSED STANDARD)

