Merge from the ASN1 branch of new ASN1 code
authorDr. Stephen Henson <steve@openssl.org>
Fri, 8 Dec 2000 19:09:35 +0000 (19:09 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 8 Dec 2000 19:09:35 +0000 (19:09 +0000)
to main trunk.

Lets see if the makes it to openssl-cvs :-)

120 files changed:
CHANGES
README.ASN1 [new file with mode: 0644]
apps/ca.c
apps/req.c
crypto/asn1/Makefile.ssl
crypto/asn1/a_bitstr.c
crypto/asn1/a_bmp.c [deleted file]
crypto/asn1/a_bool.c
crypto/asn1/a_bytes.c
crypto/asn1/a_dup.c
crypto/asn1/a_enum.c
crypto/asn1/a_gentm.c
crypto/asn1/a_i2d_fp.c
crypto/asn1/a_int.c
crypto/asn1/a_octet.c
crypto/asn1/a_print.c
crypto/asn1/a_time.c
crypto/asn1/a_type.c
crypto/asn1/a_utctm.c
crypto/asn1/a_utf8.c
crypto/asn1/a_vis.c [deleted file]
crypto/asn1/asn1.h
crypto/asn1/asn1_err.c
crypto/asn1/asn1_lib.c
crypto/asn1/asn1t.h [new file with mode: 0644]
crypto/asn1/d2i_dhp.c [deleted file]
crypto/asn1/d2i_dsap.c [deleted file]
crypto/asn1/d2i_r_pr.c [deleted file]
crypto/asn1/d2i_r_pu.c [deleted file]
crypto/asn1/d2i_s_pr.c [deleted file]
crypto/asn1/d2i_s_pu.c [deleted file]
crypto/asn1/i2d_dhp.c [deleted file]
crypto/asn1/i2d_dsap.c [deleted file]
crypto/asn1/i2d_r_pr.c [deleted file]
crypto/asn1/i2d_r_pu.c [deleted file]
crypto/asn1/i2d_s_pr.c [deleted file]
crypto/asn1/i2d_s_pu.c [deleted file]
crypto/asn1/n_pkey.c
crypto/asn1/nsseq.c
crypto/asn1/p5_pbe.c
crypto/asn1/p5_pbev2.c
crypto/asn1/p7_dgst.c [deleted file]
crypto/asn1/p7_enc.c [deleted file]
crypto/asn1/p7_enc_c.c [deleted file]
crypto/asn1/p7_evp.c [deleted file]
crypto/asn1/p7_i_s.c [deleted file]
crypto/asn1/p7_lib.c [deleted file]
crypto/asn1/p7_recip.c [deleted file]
crypto/asn1/p7_s_e.c [deleted file]
crypto/asn1/p7_signd.c [deleted file]
crypto/asn1/p7_signi.c [deleted file]
crypto/asn1/p8_pkey.c
crypto/asn1/t_req.c
crypto/asn1/t_spki.c
crypto/asn1/t_x509a.c
crypto/asn1/tasn_dec.c [new file with mode: 0644]
crypto/asn1/tasn_enc.c [new file with mode: 0644]
crypto/asn1/tasn_fre.c [new file with mode: 0644]
crypto/asn1/tasn_new.c [new file with mode: 0644]
crypto/asn1/tasn_prn.c [new file with mode: 0644]
crypto/asn1/tasn_typ.c [new file with mode: 0644]
crypto/asn1/tasn_utl.c [new file with mode: 0644]
crypto/asn1/x_algor.c
crypto/asn1/x_attrib.c
crypto/asn1/x_bignum.c [new file with mode: 0644]
crypto/asn1/x_crl.c
crypto/asn1/x_exten.c
crypto/asn1/x_info.c
crypto/asn1/x_long.c [new file with mode: 0644]
crypto/asn1/x_name.c
crypto/asn1/x_pubkey.c
crypto/asn1/x_req.c
crypto/asn1/x_sig.c
crypto/asn1/x_spki.c
crypto/asn1/x_val.c
crypto/asn1/x_x509.c
crypto/asn1/x_x509a.c
crypto/dh/Makefile.ssl
crypto/dh/dh_asn1.c [moved from crypto/asn1/a_null.c with 69% similarity]
crypto/dsa/Makefile.ssl
crypto/dsa/dsa.h
crypto/dsa/dsa_asn1.c
crypto/dsa/dsa_err.c
crypto/pkcs12/Makefile.ssl
crypto/pkcs12/p12_asn.c [new file with mode: 0644]
crypto/pkcs12/p12_attr.c
crypto/pkcs12/pkcs12.h
crypto/pkcs7/Makefile.ssl
crypto/pkcs7/pk7_asn1.c [new file with mode: 0644]
crypto/pkcs7/pk7_doit.c
crypto/pkcs7/pk7_lib.c
crypto/pkcs7/pkcs7.h
crypto/rsa/Makefile.ssl
crypto/rsa/rsa.h
crypto/rsa/rsa_asn1.c [new file with mode: 0644]
crypto/stack/safestack.h
crypto/x509/Makefile.ssl
crypto/x509/x509.h
crypto/x509/x509_att.c
crypto/x509/x509_req.c
crypto/x509/x509_v3.c
crypto/x509/x509spki.c
crypto/x509v3/Makefile.ssl
crypto/x509v3/v3_akey.c
crypto/x509v3/v3_alt.c
crypto/x509v3/v3_bcons.c
crypto/x509v3/v3_cpols.c
crypto/x509v3/v3_crld.c
crypto/x509v3/v3_extku.c
crypto/x509v3/v3_genn.c
crypto/x509v3/v3_info.c
crypto/x509v3/v3_pku.c
crypto/x509v3/v3_purp.c
crypto/x509v3/v3_sxnet.c
crypto/x509v3/v3_utl.c
crypto/x509v3/v3conf.c
crypto/x509v3/v3prin.c
crypto/x509v3/x509v3.h
demos/asn1/README.ASN1 [new file with mode: 0644]
demos/asn1/ocsp.c [new file with mode: 0644]

diff --git a/CHANGES b/CHANGES
index 8c2380a..acc4a85 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,10 @@
 
  Changes between 0.9.6 and 0.9.7  [xx XXX 2000]
 
+  *) Merge in replacement ASN1 code from the ASN1 branch. This almost
+     completely replaces the old ASN1 functionality.
+     [Steve Henson]
+
   *) Change BN_mod_exp_recp so that negative moduli are tolerated
      (the sign is ignored).  Similarly, ignore the sign in BN_MONT_CTX_set
      so that BN_mod_exp_mont and BN_mod_exp_mont_word work
diff --git a/README.ASN1 b/README.ASN1
new file mode 100644 (file)
index 0000000..11bcfaf
--- /dev/null
@@ -0,0 +1,187 @@
+
+OpenSSL ASN1 Revision
+=====================
+
+This document describes some of the issues relating to the new ASN1 code.
+
+Previous OpenSSL ASN1 problems
+=============================
+
+OK why did the OpenSSL ASN1 code need revising in the first place? Well
+there are lots of reasons some of which are included below...
+
+1. The code is difficult to read and write. For every single ASN1 structure
+(e.g. SEQUENCE) four functions need to be written for new, free, encode and
+decode operations. This is a very painful and error prone operation. Very few
+people have ever written any OpenSSL ASN1 and those that have usually wish
+they hadn't.
+
+2. Partly because of 1. the code is bloated and takes up a disproportionate
+amount of space. The SEQUENCE encoder is particularly bad: it essentially
+contains two copies of the same operation, one to compute the SEQUENCE length
+and the other to encode it.
+
+3. The code is memory based: that is it expects to be able to read the whole
+structure from memory. This is fine for small structures but if you have a
+(say) 1Gb PKCS#7 signedData structure it isn't such a good idea...
+
+4. The code for the ASN1 IMPLICIT tag is evil. It is handled by temporarily
+changing the tag to the expected one, attempting to read it, then changing it
+back again. This means that decode buffers have to be writable even though they
+are ultimately unchanged. This gets in the way of constification.
+
+5. The handling of EXPLICIT isn't much better. It adds a chunk of code into 
+the decoder and encoder for every EXPLICIT tag.
+
+6. APPLICATION and PRIVATE tags aren't even supported at all.
+
+7. Even IMPLICIT isn't complete: there is no support for implicitly tagged
+types that are not OPTIONAL.
+
+8. Much of the code assumes that a tag will fit in a single octet. This is
+only true if the tag is 30 or less (mercifully tags over 30 are rare).
+
+9. The ASN1 CHOICE type has to be largely handled manually, there aren't any
+macros that properly support it.
+
+10. Encoders have no concept of OPTIONAL and have no error checking. If the
+passed structure contains a NULL in a mandatory field it will not be encoded,
+resulting in an invalid structure.
+
+11. It is tricky to add ASN1 encoders and decoders to external applications.
+
+Template model
+==============
+
+One of the major problems with revision is the sheer volume of the ASN1 code.
+Attempts to change (for example) the IMPLICIT behaviour would result in a
+modification of *every* single decode function. 
+
+I decided to adopt a template based approach. I'm using the term 'template'
+in a manner similar to SNACC templates: it has nothing to do with C++
+templates.
+
+A template is a description of an ASN1 module as several constant C structures.
+It describes in a machine readable way exactly how the ASN1 structure should
+behave. If this template contains enough detail then it is possible to write
+versions of new, free, encode, decode (and possibly others operations) that
+operate on templates.
+
+Instead of having to write code to handle each operation only a single
+template needs to be written. If new operations are needed (such as a 'print'
+operation) only a single new template based function needs to be written 
+which will then automatically handle all existing templates.
+
+Plans for revision
+==================
+
+The revision will consist of the following steps. Other than the first two
+these can be handled in any order.
+o Design and write template new, free, encode and decode operations, initially
+memory based. *DONE*
+
+o Convert existing ASN1 code to template form. *IN PROGRESS*
+
+o Convert an existing ASN1 compiler (probably SNACC) to output templates
+in OpenSSL form.
+
+o Add support for BIO based ASN1 encoders and decoders to handle large
+structures, initially blocking I/O.
+
+o Add support for non blocking I/O: this is quite a bit harder than blocking
+I/O.
+
+o Add new ASN1 structures, such as OCSP, CRMF, S/MIME v3 (CMS), attribute
+certificates etc etc.
+
+Description of major changes
+============================
+
+The BOOLEAN type now takes three values. 0xff is TRUE, 0 is FALSE and -1 is
+absent. The meaning of absent depends on the context. If for example the
+boolean type is DEFAULT FALSE (as in the case of the critical flag for
+certificate extensions) then -1 is FALSE, if DEFAULT TRUE then -1 is TRUE.
+Usually the value will only ever be read via an API which will hide this from
+an application.
+
+There is an evil bug in the old ASN1 code that mishandles OPTIONAL with
+SEQUENCE OF or SET OF. These are both implemented as a STACK structure. The
+old code would omit the structure if the STACK was NULL (which is fine) or if
+it had zero elements (which is NOT OK). This causes problems because an empty
+SEQUENCE OF or SET OF will result in an empty STACK when it is decoded but when
+it is encoded it will be omitted resulting in different encodings. The new code
+only omits the encoding if the STACK is NULL, if it contains zero elements it
+is encoded and empty. There is an additional problem though: because an empty
+STACK was omitted, sometimes the corresponding *_new() function would
+initialize the STACK to empty so an application could immediately use it, if
+this is done with the new code (i.e. a NULL) it wont work. Therefore a new
+STACK should be allocated first. One instance of this is the X509_CRL list of
+revoked certificates: a helper function X509_CRL_add0_revoked() has been added
+for this purpose.
+
+The X509_ATTRIBUTE structure used to have an element called 'set' which took
+the value 1 if the attribute value was a SET OF or 0 if it was a single. Due
+to the behaviour of CHOICE in the new code this has been changed to a field
+called 'single' which is 0 for a SET OF and 1 for single. The old field has
+been deleted to deliberately break source compatibility. Since this structure
+is normally accessed via higher level functions this shouldn't break too much.
+
+The X509_REQ_INFO certificate request info structure no longer has a field
+called 'req_kludge'. This used to be set to 1 if the attributes field was
+(incorrectly) omitted. You can check to see if the field is omitted now by
+checking if the attributes field is NULL. Similarly if you need to omit
+the field then free attributes and set it to NULL.
+
+The top level 'detached' field in the PKCS7 structure is no longer set when
+a PKCS#7 structure is read in. PKCS7_is_detached() should be called instead.
+The behaviour of PKCS7_get_detached() is unaffected.
+
+The values of 'type' in the GENERAL_NAME structure have changed. This is
+because the old code use the ASN1 initial octet as the selector. The new
+code uses the index in the ASN1_CHOICE template.
+
+The DIST_POINT_NAME structure has changed to be a true CHOICE type.
+
+typedef struct DIST_POINT_NAME_st {
+int type;
+union {
+       STACK_OF(GENERAL_NAME) *fullname;
+       STACK_OF(X509_NAME_ENTRY) *relativename;
+} name;
+} DIST_POINT_NAME;
+
+This means that name.fullname or name.relativename should be set
+and type reflects the option. That is if name.fullname is set then
+type is 0 and if name.relativename is set type is 1.
+
+With the old code using the i2d functions would typically involve:
+
+unsigned char *buf, *p;
+int len;
+/* Find length of encoding */
+len = i2d_SOMETHING(x, NULL);
+/* Allocate buffer */
+buf = OPENSSL_malloc(len);
+if(buf == NULL) {
+       /* Malloc error */
+}
+/* Use temp variable because &p gets updated to point to end of
+ * encoding.
+ */
+p = buf;
+i2d_SOMETHING(x, &p);
+
+
+Using the new i2d you can also do:
+
+unsigned char *buf = NULL;
+int len;
+len = i2d_SOMETHING(x, &buf);
+if(len < 0) {
+       /* Malloc error */
+}
+
+and it will automatically allocate and populate a buffer with the
+encoding. After this call 'buf' will point to the start of the
+encoding which is len bytes long.
index 3f855a1..c0677a5 100644 (file)
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -1201,7 +1201,7 @@ bad:
                                if (!a2i_ASN1_INTEGER(hex,r->serialNumber,
                                        buf[0],BSIZE)) goto err;
 
-                               sk_X509_REVOKED_push(ci->revoked,r);
+                               X509_CRL_add0_revoked(crl,r);
                                }
                        }
                /* sort the data so it will be written in serial
index 4c4b9e3..7b8b4db 100644 (file)
@@ -752,8 +752,11 @@ loop:
                                }
 
                        i=make_REQ(req,pkey,!x509);
-                       if (kludge >= 0)
-                               req->req_info->req_kludge=kludge;
+                       if ((kludge > 0) && !sk_X509_ATTRIBUTE_num(req->req_info->attributes))
+                               {
+                               sk_X509_ATTRIBUTE_free(req->req_info->attributes);
+                               req->req_info->attributes = NULL;
+                               }
                        if (!i)
                                {
                                BIO_printf(bio_err,"problems making Certificate Request\n");
index 3e88b3e..5dd6628 100644 (file)
@@ -23,39 +23,33 @@ APPS=
 
 LIB=$(TOP)/libcrypto.a
 LIBSRC=        a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c \
-       a_null.c a_print.c a_type.c a_set.c a_dup.c a_d2i_fp.c a_i2d_fp.c a_bmp.c \
-       a_enum.c a_vis.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \
-       x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c \
-       x_name.c x_cinf.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \
-       d2i_r_pr.c i2d_r_pr.c d2i_r_pu.c i2d_r_pu.c \
-       d2i_s_pr.c i2d_s_pr.c d2i_s_pu.c i2d_s_pu.c \
+       a_print.c a_type.c a_set.c a_dup.c a_d2i_fp.c a_i2d_fp.c \
+       a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \
+       x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c \
+       x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \
        d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\
        t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \
-       p7_i_s.c p7_signi.c p7_signd.c p7_recip.c p7_enc_c.c p7_evp.c \
-       p7_dgst.c p7_s_e.c p7_enc.c p7_lib.c \
-       f_int.c f_string.c i2d_dhp.c i2d_dsap.c d2i_dhp.c d2i_dsap.c n_pkey.c \
+       tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \
+       f_int.c f_string.c n_pkey.c \
        f_enum.c a_hdr.c x_pkey.c a_bool.c x_exten.c \
        asn1_par.c asn1_lib.c asn1_err.c a_meth.c a_bytes.c a_strnid.c \
        evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c
 LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
-       a_null.o a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o a_bmp.o \
-       a_enum.o a_vis.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \
-       x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o \
-       x_name.o x_cinf.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \
-       d2i_r_pr.o i2d_r_pr.o d2i_r_pu.o i2d_r_pu.o \
-       d2i_s_pr.o i2d_s_pr.o d2i_s_pu.o i2d_s_pu.o \
+       a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \
+       a_enum.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \
+       x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o x_bignum.o \
+       x_long.o x_name.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \
        d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \
        t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \
-       p7_i_s.o p7_signi.o p7_signd.o p7_recip.o p7_enc_c.o p7_evp.o \
-       p7_dgst.o p7_s_e.o p7_enc.o p7_lib.o \
-       f_int.o f_string.o i2d_dhp.o i2d_dsap.o d2i_dhp.o d2i_dsap.o n_pkey.o \
+       tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \
+       f_int.o f_string.o n_pkey.o \
        f_enum.o a_hdr.o x_pkey.o a_bool.o x_exten.o \
        asn1_par.o asn1_lib.o asn1_err.o a_meth.o a_bytes.o a_strnid.o \
        evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o
 
 SRC= $(LIBSRC)
 
-EXHEADER=  asn1.h asn1_mac.h
+EXHEADER=  asn1.h asn1_mac.h asn1t.h
 HEADER=        $(EXHEADER)
 
 ALL=    $(GENERAL) $(SRC) $(HEADER)
@@ -124,30 +118,22 @@ a_bitstr.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
 a_bitstr.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 a_bitstr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 a_bitstr.o: ../cryptlib.h
-a_bmp.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
-a_bmp.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-a_bmp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
-a_bmp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-a_bmp.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
-a_bmp.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-a_bmp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-a_bmp.o: ../cryptlib.h
-a_bool.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
-a_bool.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-a_bool.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
-a_bool.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-a_bool.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
-a_bool.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-a_bool.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-a_bool.o: ../cryptlib.h
-a_bytes.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-a_bytes.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-a_bytes.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-a_bytes.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-a_bytes.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-a_bytes.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
-a_bytes.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-a_bytes.o: ../../include/openssl/symhacks.h ../cryptlib.h
+a_bool.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+a_bool.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+a_bool.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
+a_bool.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+a_bool.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
+a_bool.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+a_bool.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
+a_bool.o: ../../include/openssl/symhacks.h ../cryptlib.h
+a_bytes.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+a_bytes.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
+a_bytes.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
+a_bytes.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+a_bytes.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
+a_bytes.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+a_bytes.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+a_bytes.o: ../cryptlib.h
 a_d2i_fp.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
 a_d2i_fp.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 a_d2i_fp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -177,14 +163,14 @@ a_digest.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 a_digest.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 a_digest.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-a_dup.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-a_dup.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-a_dup.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-a_dup.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-a_dup.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-a_dup.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
-a_dup.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-a_dup.o: ../../include/openssl/symhacks.h ../cryptlib.h
+a_dup.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+a_dup.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
+a_dup.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
+a_dup.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+a_dup.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
+a_dup.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+a_dup.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+a_dup.o: ../cryptlib.h
 a_enum.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 a_enum.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 a_enum.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
@@ -209,12 +195,11 @@ a_hdr.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
 a_hdr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
 a_hdr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
 a_hdr.o: ../../include/openssl/symhacks.h ../cryptlib.h
-a_i2d_fp.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-a_i2d_fp.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-a_i2d_fp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-a_i2d_fp.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-a_i2d_fp.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-a_i2d_fp.o: ../../include/openssl/opensslconf.h
+a_i2d_fp.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+a_i2d_fp.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
+a_i2d_fp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
+a_i2d_fp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+a_i2d_fp.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
 a_i2d_fp.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 a_i2d_fp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 a_i2d_fp.o: ../cryptlib.h
@@ -242,14 +227,6 @@ a_meth.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
 a_meth.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 a_meth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 a_meth.o: ../cryptlib.h
-a_null.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
-a_null.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-a_null.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
-a_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-a_null.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
-a_null.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-a_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-a_null.o: ../cryptlib.h
 a_object.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 a_object.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 a_object.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
@@ -331,15 +308,15 @@ a_strnid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
 a_strnid.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 a_strnid.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 a_strnid.o: ../cryptlib.h
-a_time.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
-a_time.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-a_time.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
-a_time.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-a_time.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
-a_time.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-a_time.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-a_time.o: ../cryptlib.h
-a_type.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+a_time.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+a_time.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+a_time.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
+a_time.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+a_time.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
+a_time.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+a_time.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
+a_time.o: ../../include/openssl/symhacks.h ../cryptlib.h
+a_type.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 a_type.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 a_type.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
 a_type.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
@@ -383,26 +360,17 @@ a_verify.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 a_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 a_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-a_vis.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
-a_vis.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-a_vis.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
-a_vis.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-a_vis.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
-a_vis.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-a_vis.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-a_vis.o: ../cryptlib.h
 asn1_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 asn1_err.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
 asn1_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
 asn1_err.o: ../../include/openssl/opensslconf.h
 asn1_err.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 asn1_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-asn1_lib.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-asn1_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-asn1_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-asn1_lib.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-asn1_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-asn1_lib.o: ../../include/openssl/opensslconf.h
+asn1_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+asn1_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
+asn1_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h
+asn1_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+asn1_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
 asn1_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 asn1_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 asn1_lib.o: ../cryptlib.h
@@ -423,27 +391,6 @@ asn_pack.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
 asn_pack.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 asn_pack.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 asn_pack.o: ../cryptlib.h
-d2i_dhp.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-d2i_dhp.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-d2i_dhp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-d2i_dhp.o: ../../include/openssl/dh.h ../../include/openssl/e_os.h
-d2i_dhp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-d2i_dhp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-d2i_dhp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-d2i_dhp.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-d2i_dhp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-d2i_dhp.o: ../cryptlib.h
-d2i_dsap.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-d2i_dsap.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-d2i_dsap.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-d2i_dsap.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
-d2i_dsap.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-d2i_dsap.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-d2i_dsap.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-d2i_dsap.o: ../../include/openssl/opensslconf.h
-d2i_dsap.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-d2i_dsap.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-d2i_dsap.o: ../cryptlib.h
 d2i_pr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 d2i_pr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
 d2i_pr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
@@ -480,48 +427,6 @@ d2i_pu.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
 d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 d2i_pu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 d2i_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h
-d2i_r_pr.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-d2i_r_pr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-d2i_r_pr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-d2i_r_pr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-d2i_r_pr.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-d2i_r_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-d2i_r_pr.o: ../../include/openssl/opensslconf.h
-d2i_r_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/rsa.h
-d2i_r_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-d2i_r_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h
-d2i_r_pu.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-d2i_r_pu.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-d2i_r_pu.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-d2i_r_pu.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-d2i_r_pu.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-d2i_r_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-d2i_r_pu.o: ../../include/openssl/opensslconf.h
-d2i_r_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/rsa.h
-d2i_r_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-d2i_r_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h
-d2i_s_pr.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-d2i_s_pr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-d2i_s_pr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-d2i_s_pr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
-d2i_s_pr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-d2i_s_pr.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-d2i_s_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-d2i_s_pr.o: ../../include/openssl/opensslconf.h
-d2i_s_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-d2i_s_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-d2i_s_pr.o: ../cryptlib.h
-d2i_s_pu.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-d2i_s_pu.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-d2i_s_pu.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-d2i_s_pu.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
-d2i_s_pu.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-d2i_s_pu.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-d2i_s_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-d2i_s_pu.o: ../../include/openssl/opensslconf.h
-d2i_s_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-d2i_s_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-d2i_s_pu.o: ../cryptlib.h
 evp_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
 evp_asn1.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
 evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -555,25 +460,6 @@ f_string.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
 f_string.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
 f_string.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 f_string.o: ../cryptlib.h
-i2d_dhp.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-i2d_dhp.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-i2d_dhp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-i2d_dhp.o: ../../include/openssl/dh.h ../../include/openssl/e_os.h
-i2d_dhp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-i2d_dhp.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
-i2d_dhp.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-i2d_dhp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-i2d_dhp.o: ../cryptlib.h
-i2d_dsap.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-i2d_dsap.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-i2d_dsap.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-i2d_dsap.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
-i2d_dsap.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-i2d_dsap.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-i2d_dsap.o: ../../include/openssl/opensslconf.h
-i2d_dsap.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-i2d_dsap.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-i2d_dsap.o: ../cryptlib.h
 i2d_pr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 i2d_pr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
 i2d_pr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
@@ -610,88 +496,47 @@ i2d_pu.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
 i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 i2d_pu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 i2d_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h
-i2d_r_pr.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-i2d_r_pr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-i2d_r_pr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-i2d_r_pr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-i2d_r_pr.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-i2d_r_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-i2d_r_pr.o: ../../include/openssl/opensslconf.h
-i2d_r_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/rsa.h
-i2d_r_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-i2d_r_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h
-i2d_r_pu.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-i2d_r_pu.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-i2d_r_pu.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-i2d_r_pu.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-i2d_r_pu.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-i2d_r_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-i2d_r_pu.o: ../../include/openssl/opensslconf.h
-i2d_r_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/rsa.h
-i2d_r_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-i2d_r_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h
-i2d_s_pr.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-i2d_s_pr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-i2d_s_pr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-i2d_s_pr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
-i2d_s_pr.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-i2d_s_pr.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-i2d_s_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-i2d_s_pr.o: ../../include/openssl/opensslconf.h
-i2d_s_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-i2d_s_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-i2d_s_pr.o: ../cryptlib.h
-i2d_s_pu.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-i2d_s_pu.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-i2d_s_pu.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-i2d_s_pu.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
-i2d_s_pu.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
-i2d_s_pu.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
-i2d_s_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-i2d_s_pu.o: ../../include/openssl/opensslconf.h
-i2d_s_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
-i2d_s_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-i2d_s_pu.o: ../cryptlib.h
 n_pkey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-n_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-n_pkey.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-n_pkey.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-n_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-n_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-n_pkey.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-n_pkey.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-n_pkey.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-n_pkey.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-n_pkey.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-n_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-n_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-n_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-n_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+n_pkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
+n_pkey.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
+n_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
+n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
+n_pkey.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+n_pkey.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+n_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+n_pkey.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
+n_pkey.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
+n_pkey.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
+n_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+n_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
+n_pkey.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
+n_pkey.o: ../../include/openssl/rd_fst.h ../../include/openssl/rijndael.h
+n_pkey.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
+n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+n_pkey.o: ../cryptlib.h
+nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 nsseq.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 nsseq.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 nsseq.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
 nsseq.o: ../../include/openssl/des.h ../../include/openssl/dh.h
 nsseq.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
-nsseq.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-nsseq.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
-nsseq.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
-nsseq.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
-nsseq.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
-nsseq.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
-nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
-nsseq.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
-nsseq.o: ../../include/openssl/rd_fst.h ../../include/openssl/rijndael.h
-nsseq.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
-nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
-nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
-nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
-p5_pbe.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+nsseq.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
+nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
+nsseq.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
+nsseq.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
+nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
+nsseq.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
+nsseq.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
+nsseq.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
+nsseq.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
+nsseq.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
+nsseq.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
+nsseq.o: ../../include/openssl/x509_vfy.h
+p5_pbe.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 p5_pbe.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 p5_pbe.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 p5_pbe.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -712,7 +557,7 @@ p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 p5_pbe.o: ../cryptlib.h
-p5_pbev2.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+p5_pbev2.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 p5_pbev2.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 p5_pbev2.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 p5_pbev2.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -733,207 +578,7 @@ p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 p5_pbev2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 p5_pbev2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 p5_pbev2.o: ../cryptlib.h
-p7_dgst.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_dgst.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_dgst.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_dgst.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_dgst.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_dgst.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_dgst.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_dgst.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_dgst.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_dgst.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_dgst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_dgst.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_dgst.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_dgst.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_dgst.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_dgst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_dgst.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_dgst.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_enc.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_enc.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_enc.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_enc.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_enc.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_enc.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_enc.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_enc.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_enc.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_enc.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_enc.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_enc.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_enc.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_enc.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_enc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_enc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_enc_c.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_enc_c.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_enc_c.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_enc_c.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_enc_c.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_enc_c.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_enc_c.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_enc_c.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_enc_c.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_enc_c.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_enc_c.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_enc_c.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_enc_c.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_enc_c.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_enc_c.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_enc_c.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_enc_c.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_enc_c.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_enc_c.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_enc_c.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_evp.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_evp.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_evp.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_evp.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_evp.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_evp.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_evp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_evp.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_evp.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_evp.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_evp.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_evp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_evp.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_evp.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_evp.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_evp.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_evp.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_evp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_evp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_evp.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_i_s.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_i_s.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_i_s.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_i_s.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_i_s.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_i_s.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_i_s.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_i_s.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_i_s.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_i_s.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_i_s.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_i_s.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_i_s.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_i_s.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_i_s.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_i_s.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_i_s.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_i_s.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_i_s.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_i_s.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_lib.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_lib.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_lib.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_lib.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_lib.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_lib.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_lib.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_lib.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_lib.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_lib.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_recip.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_recip.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_recip.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_recip.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_recip.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_recip.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_recip.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_recip.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_recip.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_recip.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_recip.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_recip.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_recip.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_recip.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_recip.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_recip.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_recip.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_recip.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_recip.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_recip.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_s_e.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_s_e.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_s_e.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_s_e.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_s_e.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_s_e.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_s_e.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_s_e.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_s_e.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_s_e.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_s_e.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_s_e.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_s_e.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_s_e.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_s_e.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_s_e.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_s_e.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_s_e.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_s_e.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_s_e.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_signd.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_signd.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_signd.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_signd.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_signd.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_signd.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_signd.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_signd.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_signd.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_signd.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_signd.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_signd.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_signd.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_signd.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_signd.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_signd.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_signd.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_signd.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_signd.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_signd.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p7_signi.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-p7_signi.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-p7_signi.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-p7_signi.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-p7_signi.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-p7_signi.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-p7_signi.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-p7_signi.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-p7_signi.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-p7_signi.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-p7_signi.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-p7_signi.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-p7_signi.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-p7_signi.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-p7_signi.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-p7_signi.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-p7_signi.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-p7_signi.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-p7_signi.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-p7_signi.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-p8_pkey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+p8_pkey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 p8_pkey.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 p8_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 p8_pkey.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1025,26 +670,26 @@ t_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 t_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 t_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 t_req.o: ../../include/openssl/x509v3.h ../cryptlib.h
-t_spki.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-t_spki.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-t_spki.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-t_spki.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-t_spki.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-t_spki.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-t_spki.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-t_spki.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-t_spki.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-t_spki.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-t_spki.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-t_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-t_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-t_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-t_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
+t_spki.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+t_spki.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
+t_spki.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
+t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
+t_spki.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+t_spki.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+t_spki.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
+t_spki.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
+t_spki.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
+t_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+t_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
+t_spki.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
+t_spki.o: ../../include/openssl/rd_fst.h ../../include/openssl/rijndael.h
+t_spki.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
+t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+t_spki.o: ../cryptlib.h
 t_x509.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 t_x509.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
 t_x509.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
@@ -1066,33 +711,71 @@ t_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
 t_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
 t_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
 t_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h
-t_x509a.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-t_x509a.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-t_x509a.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-t_x509a.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-t_x509a.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-t_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-t_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-t_x509a.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-t_x509a.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-t_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-t_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-t_x509a.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-t_x509a.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-t_x509a.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-t_x509a.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_algor.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+t_x509a.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+t_x509a.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
+t_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
+t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
+t_x509a.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+t_x509a.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+t_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+t_x509a.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
+t_x509a.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
+t_x509a.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
+t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+t_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
+t_x509a.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
+t_x509a.o: ../../include/openssl/rd_fst.h ../../include/openssl/rijndael.h
+t_x509a.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
+t_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+t_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+t_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+t_x509a.o: ../cryptlib.h
+tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+tasn_dec.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
+tasn_dec.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
+tasn_dec.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+tasn_dec.o: ../../include/openssl/opensslconf.h
+tasn_dec.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+tasn_dec.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+tasn_enc.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+tasn_enc.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+tasn_enc.o: ../../include/openssl/crypto.h ../../include/openssl/obj_mac.h
+tasn_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+tasn_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+tasn_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+tasn_fre.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+tasn_fre.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+tasn_fre.o: ../../include/openssl/crypto.h ../../include/openssl/obj_mac.h
+tasn_fre.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+tasn_fre.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+tasn_fre.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+tasn_new.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+tasn_new.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+tasn_new.o: ../../include/openssl/crypto.h ../../include/openssl/err.h
+tasn_new.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+tasn_new.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+tasn_new.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+tasn_new.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+tasn_typ.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+tasn_typ.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+tasn_typ.o: ../../include/openssl/crypto.h ../../include/openssl/opensslconf.h
+tasn_typ.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+tasn_typ.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+tasn_utl.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+tasn_utl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+tasn_utl.o: ../../include/openssl/crypto.h ../../include/openssl/err.h
+tasn_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
+tasn_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
+tasn_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+tasn_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+x_algor.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_algor.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_algor.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_algor.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
 x_algor.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-x_algor.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-x_algor.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+x_algor.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 x_algor.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
 x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
 x_algor.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
@@ -1105,8 +788,8 @@ x_algor.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
 x_algor.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_algor.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_algor.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-x_algor.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_attrib.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_algor.o: ../../include/openssl/x509_vfy.h
+x_attrib.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_attrib.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_attrib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_attrib.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1126,27 +809,16 @@ x_attrib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_attrib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_attrib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_cinf.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-x_cinf.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-x_cinf.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-x_cinf.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-x_cinf.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-x_cinf.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-x_cinf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-x_cinf.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-x_cinf.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-x_cinf.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-x_cinf.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-x_cinf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-x_cinf.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-x_cinf.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-x_cinf.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-x_cinf.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-x_cinf.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-x_cinf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-x_cinf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-x_cinf.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_crl.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_bignum.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+x_bignum.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+x_bignum.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
+x_bignum.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+x_bignum.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
+x_bignum.o: ../../include/openssl/opensslconf.h
+x_bignum.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
+x_bignum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+x_bignum.o: ../cryptlib.h
+x_crl.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_crl.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_crl.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1166,13 +838,12 @@ x_crl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_crl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_exten.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_exten.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_exten.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
 x_exten.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-x_exten.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-x_exten.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
+x_exten.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 x_exten.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
 x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
 x_exten.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
@@ -1185,28 +856,36 @@ x_exten.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
 x_exten.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_exten.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_exten.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-x_exten.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_info.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
-x_info.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
-x_info.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
-x_info.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
-x_info.o: ../../include/openssl/des.h ../../include/openssl/dh.h
-x_info.o: ../../include/openssl/dsa.h ../../include/openssl/e_os.h
-x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-x_info.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
-x_info.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
-x_info.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
-x_info.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
-x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
-x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/pkcs7.h
-x_info.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
-x_info.o: ../../include/openssl/rc5.h ../../include/openssl/rd_fst.h
-x_info.o: ../../include/openssl/rijndael.h ../../include/openssl/ripemd.h
-x_info.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
-x_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
-x_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
-x_info.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_name.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_exten.o: ../../include/openssl/x509_vfy.h
+x_info.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
+x_info.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
+x_info.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
+x_info.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
+x_info.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
+x_info.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
+x_info.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
+x_info.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
+x_info.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
+x_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
+x_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
+x_info.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
+x_info.o: ../../include/openssl/rd_fst.h ../../include/openssl/rijndael.h
+x_info.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
+x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
+x_info.o: ../cryptlib.h
+x_long.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
+x_long.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
+x_long.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
+x_long.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h
+x_long.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
+x_long.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
+x_long.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
+x_long.o: ../../include/openssl/symhacks.h ../cryptlib.h
+x_name.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_name.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_name.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_name.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1246,7 +925,7 @@ x_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_pubkey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_pubkey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_pubkey.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_pubkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_pubkey.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1266,7 +945,7 @@ x_pubkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_pubkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_pubkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_pubkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_req.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_req.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_req.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_req.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_req.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1286,7 +965,7 @@ x_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_sig.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_sig.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_sig.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_sig.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_sig.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1306,7 +985,7 @@ x_sig.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_spki.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_spki.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_spki.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_spki.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1326,7 +1005,7 @@ x_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_val.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_val.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_val.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_val.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_val.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
@@ -1346,7 +1025,7 @@ x_val.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
 x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h
-x_x509.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_x509.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_x509.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_x509.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
@@ -1368,7 +1047,7 @@ x_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
 x_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
 x_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
 x_x509.o: ../cryptlib.h
-x_x509a.o: ../../include/openssl/asn1.h ../../include/openssl/asn1_mac.h
+x_x509a.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
 x_x509a.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
 x_x509a.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
 x_x509a.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
index 7013a40..46e9703 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_BIT_STRING *ASN1_BIT_STRING_new(void)
-{ return M_ASN1_BIT_STRING_new(); }
-
-void ASN1_BIT_STRING_free(ASN1_BIT_STRING *x)
-{ M_ASN1_BIT_STRING_free(x); }
-
 int ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len)
 { return M_ASN1_BIT_STRING_set(x, d, len); }
 
-int i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp)
-{
-       int len, ret;
-       len = i2c_ASN1_BIT_STRING(a, NULL);     
-       ret=ASN1_object_size(0,len,V_ASN1_BIT_STRING);
-       if(pp) {
-               ASN1_put_object(pp,0,len,V_ASN1_BIT_STRING,V_ASN1_UNIVERSAL);
-               i2c_ASN1_BIT_STRING(a, pp);     
-       }
-       return ret;
-}
-
 int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp)
        {
        int ret,j,bits,len;
@@ -129,40 +111,6 @@ int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp)
        return(ret);
        }
 
-
-/* Convert DER encoded ASN1 BIT_STRING to ASN1_BIT_STRING structure */
-ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, unsigned char **pp,
-            long length)
-{
-       unsigned char *p;
-       long len;
-       int i;
-       int inf,tag,xclass;
-       ASN1_BIT_STRING *ret;
-
-       p= *pp;
-       inf=ASN1_get_object(&p,&len,&tag,&xclass,length);
-       if (inf & 0x80)
-               {
-               i=ASN1_R_BAD_OBJECT_HEADER;
-               goto err;
-               }
-
-       if (tag != V_ASN1_BIT_STRING)
-               {
-               i=ASN1_R_EXPECTING_A_BIT_STRING;
-               goto err;
-               }
-       if (len < 1) { i=ASN1_R_STRING_TOO_SHORT; goto err; }
-       ret = c2i_ASN1_BIT_STRING(a, &p, len);
-       if(ret) *pp = p;
-       return ret;
-err:
-       ASN1err(ASN1_F_D2I_ASN1_BIT_STRING,i);
-       return(NULL);
-
-}
-
 ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, unsigned char **pp,
             long len)
        {
diff --git a/crypto/asn1/a_bmp.c b/crypto/asn1/a_bmp.c
deleted file mode 100644 (file)
index d9ac5a0..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* crypto/asn1/a_bmp.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1.h>
-
-ASN1_BMPSTRING *ASN1_BMPSTRING_new(void)
-{ return M_ASN1_BMPSTRING_new(); }
-
-void ASN1_BMPSTRING_free(ASN1_BMPSTRING *x)
-{ M_ASN1_BMPSTRING_free(x); }
-
-int i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **pp)
-       {
-       return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,
-               V_ASN1_BMPSTRING,V_ASN1_UNIVERSAL));
-       }
-
-ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, unsigned char **pp,
-            long length)
-       {
-       ASN1_BMPSTRING *ret=NULL;
-
-       ret=(ASN1_BMPSTRING *)d2i_ASN1_bytes((ASN1_STRING **)a,
-               pp,length,V_ASN1_BMPSTRING,V_ASN1_UNIVERSAL);
-       if (ret == NULL)
-               {
-               ASN1err(ASN1_F_D2I_ASN1_BMPSTRING,ERR_R_NESTED_ASN1_ERROR);
-               return(NULL);
-               }
-       return(ret);
-       }
-
index 18fa618..24333ea 100644 (file)
@@ -58,7 +58,7 @@
 
 #include <stdio.h>
 #include "cryptlib.h"
-#include <openssl/asn1.h>
+#include <openssl/asn1t.h>
 
 int i2d_ASN1_BOOLEAN(int a, unsigned char **pp)
        {
@@ -110,3 +110,5 @@ err:
        ASN1err(ASN1_F_D2I_ASN1_BOOLEAN,i);
        return(ret);
        }
+
+
index 3a0c0c7..aa4b570 100644 (file)
 
 #include <stdio.h>
 #include "cryptlib.h"
-#include <openssl/asn1_mac.h>
+#include <openssl/asn1.h>
 
 static unsigned long tag2bit[32]={
 0,     0,      0,      B_ASN1_BIT_STRING,      /* tags  0 -  3 */
 B_ASN1_OCTET_STRING,   0,      0,              B_ASN1_UNKNOWN,/* tags  4- 7 */
 B_ASN1_UNKNOWN,        B_ASN1_UNKNOWN, B_ASN1_UNKNOWN, B_ASN1_UNKNOWN,/* tags  8-11 */
 B_ASN1_UTF8STRING,B_ASN1_UNKNOWN,B_ASN1_UNKNOWN,B_ASN1_UNKNOWN,/* tags 12-15 */
-0,     0,      B_ASN1_NUMERICSTRING,B_ASN1_PRINTABLESTRING,
-B_ASN1_T61STRING,B_ASN1_VIDEOTEXSTRING,B_ASN1_IA5STRING,0,
-0,B_ASN1_GRAPHICSTRING,B_ASN1_ISO64STRING,B_ASN1_GENERALSTRING,
-B_ASN1_UNIVERSALSTRING,B_ASN1_UNKNOWN,B_ASN1_BMPSTRING,B_ASN1_UNKNOWN,
+0,     0,      B_ASN1_NUMERICSTRING,B_ASN1_PRINTABLESTRING,   /* tags 16-19 */
+B_ASN1_T61STRING,B_ASN1_VIDEOTEXSTRING,B_ASN1_IA5STRING,       /* tags 20-22 */
+B_ASN1_UTCTIME, B_ASN1_GENERALIZEDTIME,                               /* tags 23-24 */ 
+B_ASN1_GRAPHICSTRING,B_ASN1_ISO64STRING,B_ASN1_GENERALSTRING,  /* tags 25-27 */
+B_ASN1_UNIVERSALSTRING,B_ASN1_UNKNOWN,B_ASN1_BMPSTRING,B_ASN1_UNKNOWN, /* tags 28-31 */
        };
 
+unsigned long ASN1_tag2bit(int tag)
+{
+       if((tag < 0) || (tag > 30)) return 0;
+       return tag2bit[tag];
+}
+
 static int asn1_collate_primitive(ASN1_STRING *a, ASN1_CTX *c);
 /* type is a 'bitmap' of acceptable string types.
  */
index c3bda58..60e2e9a 100644 (file)
@@ -58,7 +58,7 @@
 
 #include <stdio.h>
 #include "cryptlib.h"
-#include <openssl/asn1_mac.h>
+#include <openssl/asn1.h>
 
 #define READ_CHUNK   2048
 
index 1428d1d..b507c5e 100644 (file)
  * for comments on encoding see a_int.c
  */
 
-ASN1_ENUMERATED *ASN1_ENUMERATED_new(void)
-{ return M_ASN1_ENUMERATED_new(); }
-
-void ASN1_ENUMERATED_free(ASN1_ENUMERATED *x)
-{ M_ASN1_ENUMERATED_free(x); }
-
-
-int i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **pp)
-{
-       int len, ret;
-       if(!a) return 0;
-       len = i2c_ASN1_INTEGER(a, NULL);        
-       ret=ASN1_object_size(0,len,V_ASN1_ENUMERATED);
-       if(pp) {
-               ASN1_put_object(pp,0,len,V_ASN1_ENUMERATED,V_ASN1_UNIVERSAL);
-               i2c_ASN1_INTEGER(a, pp);        
-       }
-       return ret;
-}
-
-ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, unsigned char **pp,
-            long length)
-{
-       unsigned char *p;
-       long len;
-       int i;
-       int inf,tag,xclass;
-       ASN1_ENUMERATED *ret;
-
-       p= *pp;
-       inf=ASN1_get_object(&p,&len,&tag,&xclass,length);
-       if (inf & 0x80)
-               {
-               i=ASN1_R_BAD_OBJECT_HEADER;
-               goto err;
-               }
-
-       if (tag != V_ASN1_ENUMERATED)
-               {
-               i=ASN1_R_EXPECTING_AN_ENUMERATED;
-               goto err;
-               }
-       ret = c2i_ASN1_INTEGER(a, &p, len);
-       if(ret) {
-               ret->type = (V_ASN1_NEG & ret->type) | V_ASN1_ENUMERATED;
-               *pp = p;
-       }
-       return ret;
-err:
-       ASN1err(ASN1_F_D2I_ASN1_ENUMERATED,i);
-       return(NULL);
-
-}
-
 int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v)
        {
        int i,j,k;
index 314479a..d71c190 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_new(void)
-{ return M_ASN1_GENERALIZEDTIME_new(); }
-
-void ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *x)
-{ M_ASN1_GENERALIZEDTIME_free(x); }
+#if 0
 
 int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp)
        {
@@ -116,6 +112,8 @@ err:
        return(NULL);
        }
 
+#endif
+
 int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
        {
        static int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0};
index aee29a7..7b64a57 100644 (file)
@@ -59,7 +59,7 @@
 #include <stdio.h>
 #include "cryptlib.h"
 #include <openssl/buffer.h>
-#include <openssl/asn1_mac.h>
+#include <openssl/asn1.h>
 
 #ifndef NO_FP_API
 int ASN1_i2d_fp(int (*i2d)(), FILE *out, unsigned char *x)
index 6f0413f..c18376b 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_INTEGER *ASN1_INTEGER_new(void)
-{ return M_ASN1_INTEGER_new();}
-
-void ASN1_INTEGER_free(ASN1_INTEGER *x)
-{ M_ASN1_INTEGER_free(x);}
-
 ASN1_INTEGER *ASN1_INTEGER_dup(ASN1_INTEGER *x)
 { return M_ASN1_INTEGER_dup(x);}
 
 int ASN1_INTEGER_cmp(ASN1_INTEGER *x, ASN1_INTEGER *y)
 { return M_ASN1_INTEGER_cmp(x,y);}
 
-/* Output ASN1 INTEGER including tag+length */
-
-int i2d_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp)
-{
-       int len, ret;
-       if(!a) return 0;
-       len = i2c_ASN1_INTEGER(a, NULL);        
-       ret=ASN1_object_size(0,len,V_ASN1_INTEGER);
-       if(pp) {
-               ASN1_put_object(pp,0,len,V_ASN1_INTEGER,V_ASN1_UNIVERSAL);
-               i2c_ASN1_INTEGER(a, pp);        
-       }
-       return ret;
-}
-
 /* 
  * This converts an ASN1 INTEGER into its content encoding.
  * The internal representation is an ASN1_STRING whose data is a big endian
@@ -174,39 +153,6 @@ int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp)
        return(ret);
        }
 
-/* Convert DER encoded ASN1 INTEGER to ASN1_INTEGER structure */
-ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a, unsigned char **pp,
-            long length)
-{
-       unsigned char *p;
-       long len;
-       int i;
-       int inf,tag,xclass;
-       ASN1_INTEGER *ret;
-
-       p= *pp;
-       inf=ASN1_get_object(&p,&len,&tag,&xclass,length);
-       if (inf & 0x80)
-               {
-               i=ASN1_R_BAD_OBJECT_HEADER;
-               goto err;
-               }
-
-       if (tag != V_ASN1_INTEGER)
-               {
-               i=ASN1_R_EXPECTING_AN_INTEGER;
-               goto err;
-               }
-       ret = c2i_ASN1_INTEGER(a, &p, len);
-       if(ret) *pp = p;
-       return ret;
-err:
-       ASN1err(ASN1_F_D2I_ASN1_INTEGER,i);
-       return(NULL);
-
-}
-
-
 /* Convert just ASN1 INTEGER content octets to ASN1_INTEGER structure */
 
 ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, unsigned char **pp,
index 2586f43..9690bae 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_OCTET_STRING *ASN1_OCTET_STRING_new(void)
-{ return M_ASN1_OCTET_STRING_new(); }
-
-void ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *x)
-{ M_ASN1_OCTET_STRING_free(x); }
-
 ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(ASN1_OCTET_STRING *x)
 { return M_ASN1_OCTET_STRING_dup(x); }
 
@@ -75,21 +69,3 @@ int ASN1_OCTET_STRING_cmp(ASN1_OCTET_STRING *a, ASN1_OCTET_STRING *b)
 int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *x, unsigned char *d, int len)
 { return M_ASN1_OCTET_STRING_set(x, d, len); }
 
-int i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **pp)
-{ return M_i2d_ASN1_OCTET_STRING(a, pp); }
-
-ASN1_OCTET_STRING *d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a,
-            unsigned char **pp, long length)
-       {
-       ASN1_OCTET_STRING *ret=NULL;
-
-       ret=(ASN1_OCTET_STRING *)d2i_ASN1_bytes((ASN1_STRING **)a,
-               pp,length,V_ASN1_OCTET_STRING,V_ASN1_UNIVERSAL);
-       if (ret == NULL)
-               {
-               ASN1err(ASN1_F_D2I_ASN1_OCTET_STRING,ERR_R_NESTED_ASN1_ERROR);
-               return(NULL);
-               }
-       return(ret);
-       }
-
index b7bd2bd..8035513 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_IA5STRING *ASN1_IA5STRING_new(void)
-{ return M_ASN1_IA5STRING_new();}
-
-void ASN1_IA5STRING_free(ASN1_IA5STRING *x)
-{ M_ASN1_IA5STRING_free(x);}
-
-int i2d_ASN1_IA5STRING(ASN1_IA5STRING *a, unsigned char **pp)
-       { return(M_i2d_ASN1_IA5STRING(a,pp)); }
-
-ASN1_IA5STRING *d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_ASN1_IA5STRING(a,pp,l)); }
-
-ASN1_T61STRING *ASN1_T61STRING_new(void)
-{ return M_ASN1_T61STRING_new();}
-
-void ASN1_T61STRING_free(ASN1_T61STRING *x)
-{ M_ASN1_T61STRING_free(x);}
-
-ASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_ASN1_T61STRING(a,pp,l)); }
-
-ASN1_PRINTABLESTRING *ASN1_PRINTABLESTRING_new(void)
-{ return M_ASN1_PRINTABLESTRING_new();}
-
-void ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *x)
-{ M_ASN1_PRINTABLESTRING_free(x);}
-
-ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a,
-            unsigned char **pp, long l)
-       { return(M_d2i_ASN1_PRINTABLESTRING(a,pp,
-            l)); }
-
-int i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **pp)
-       { return(M_i2d_ASN1_PRINTABLESTRING(a,pp)); }
-
-int i2d_ASN1_PRINTABLE(ASN1_STRING *a, unsigned char **pp)
-       { return(M_i2d_ASN1_PRINTABLE(a,pp)); }
-
-ASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_ASN1_PRINTABLE(a,pp,l)); }
-
 int ASN1_PRINTABLE_type(unsigned char *s, int len)
        {
        int c;
@@ -169,29 +125,3 @@ int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s)
        s->type=ASN1_PRINTABLE_type(s->data,s->length);
        return(1);
        }
-
-ASN1_STRING *DIRECTORYSTRING_new(void)
-{ return M_DIRECTORYSTRING_new();}
-
-void DIRECTORYSTRING_free(ASN1_STRING *x)
-{ M_DIRECTORYSTRING_free(x);}
-
-int i2d_DIRECTORYSTRING(ASN1_STRING *a, unsigned char **pp)
-       { return(M_i2d_DIRECTORYSTRING(a,pp)); }
-
-ASN1_STRING *d2i_DIRECTORYSTRING(ASN1_STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_DIRECTORYSTRING(a,pp,l)); }
-
-ASN1_STRING *DISPLAYTEXT_new(void)
-{ return M_DISPLAYTEXT_new();}
-
-void DISPLAYTEXT_free(ASN1_STRING *x)
-{ M_DISPLAYTEXT_free(x);}
-
-int i2d_DISPLAYTEXT(ASN1_STRING *a, unsigned char **pp)
-       { return(M_i2d_DISPLAYTEXT(a,pp)); }
-
-ASN1_STRING *d2i_DISPLAYTEXT(ASN1_STRING **a, unsigned char **pp,
-            long l)
-       { return(M_d2i_DISPLAYTEXT(a,pp,l)); }
index 8c0ddee..edc4929 100644 (file)
 #include <stdio.h>
 #include <time.h>
 #include "cryptlib.h"
-#include <openssl/asn1.h>
+#include <openssl/asn1t.h>
 
-ASN1_TIME *ASN1_TIME_new(void)
-{ return M_ASN1_TIME_new(); }
+IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME)
 
-void ASN1_TIME_free(ASN1_TIME *x)
-{ M_ASN1_TIME_free(x); }
+IMPLEMENT_ASN1_FUNCTIONS(ASN1_TIME)
 
+#if 0
 int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **pp)
        {
 #ifdef CHARSET_EBCDIC
@@ -95,19 +94,7 @@ int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **pp)
        ASN1err(ASN1_F_I2D_ASN1_TIME,ASN1_R_EXPECTING_A_TIME);
        return -1;
        }
-
-
-ASN1_TIME *d2i_ASN1_TIME(ASN1_TIME **a, unsigned char **pp, long length)
-       {
-       unsigned char tag;
-       tag = **pp & ~V_ASN1_CONSTRUCTED;
-       if(tag == (V_ASN1_UTCTIME|V_ASN1_UNIVERSAL))
-                                        return d2i_ASN1_UTCTIME(a, pp, length);
-       if(tag == (V_ASN1_GENERALIZEDTIME|V_ASN1_UNIVERSAL))
-                               return d2i_ASN1_GENERALIZEDTIME(a, pp, length);
-       ASN1err(ASN1_F_D2I_ASN1_TIME,ASN1_R_EXPECTING_A_TIME);
-       return(NULL);
-       }
+#endif
 
 
 ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
index e72a6b2..96e111c 100644 (file)
  */
 
 #include <stdio.h>
+#include <openssl/asn1t.h>
 #include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-
-static void ASN1_TYPE_component_free(ASN1_TYPE *a);
-int i2d_ASN1_TYPE(ASN1_TYPE *a, unsigned char **pp)
-       {
-       int r=0;
-
-       if (a == NULL) return(0);
-
-       switch (a->type)
-               {
-       case V_ASN1_NULL:
-               if (pp != NULL)
-                       ASN1_put_object(pp,0,0,V_ASN1_NULL,V_ASN1_UNIVERSAL);
-               r=2;
-               break;
-       case V_ASN1_INTEGER:
-       case V_ASN1_NEG_INTEGER:
-               r=i2d_ASN1_INTEGER(a->value.integer,pp);
-               break;
-       case V_ASN1_ENUMERATED:
-       case V_ASN1_NEG_ENUMERATED:
-               r=i2d_ASN1_ENUMERATED(a->value.enumerated,pp);
-               break;
-       case V_ASN1_BIT_STRING:
-               r=i2d_ASN1_BIT_STRING(a->value.bit_string,pp);
-               break;
-       case V_ASN1_OCTET_STRING:
-               r=i2d_ASN1_OCTET_STRING(a->value.octet_string,pp);
-               break;
-       case V_ASN1_OBJECT:
-               r=i2d_ASN1_OBJECT(a->value.object,pp);
-               break;
-       case V_ASN1_PRINTABLESTRING:
-               r=M_i2d_ASN1_PRINTABLESTRING(a->value.printablestring,pp);
-               break;
-       case V_ASN1_T61STRING:
-               r=M_i2d_ASN1_T61STRING(a->value.t61string,pp);
-               break;
-       case V_ASN1_IA5STRING:
-               r=M_i2d_ASN1_IA5STRING(a->value.ia5string,pp);
-               break;
-       case V_ASN1_GENERALSTRING:
-               r=M_i2d_ASN1_GENERALSTRING(a->value.generalstring,pp);
-               break;
-       case V_ASN1_UNIVERSALSTRING:
-               r=M_i2d_ASN1_UNIVERSALSTRING(a->value.universalstring,pp);
-               break;
-       case V_ASN1_UTF8STRING:
-               r=M_i2d_ASN1_UTF8STRING(a->value.utf8string,pp);
-               break;
-       case V_ASN1_VISIBLESTRING:
-               r=M_i2d_ASN1_VISIBLESTRING(a->value.visiblestring,pp);
-               break;
-       case V_ASN1_BMPSTRING:
-               r=M_i2d_ASN1_BMPSTRING(a->value.bmpstring,pp);
-               break;
-       case V_ASN1_UTCTIME:
-               r=i2d_ASN1_UTCTIME(a->value.utctime,pp);
-               break;
-       case V_ASN1_GENERALIZEDTIME:
-               r=i2d_ASN1_GENERALIZEDTIME(a->value.generalizedtime,pp);
-               break;
-       case V_ASN1_SET:
-       case V_ASN1_SEQUENCE:
-       case V_ASN1_OTHER:
-       default:
-               if (a->value.set == NULL)
-                       r=0;
-               else
-                       {
-                       r=a->value.set->length;
-                       if (pp != NULL)
-                               {
-                               memcpy(*pp,a->value.set->data,r);
-                               *pp+=r;
-                               }
-                       }
-               break;
-               }
-       return(r);
-       }
-
-ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **a, unsigned char **pp, long length)
-       {
-       ASN1_TYPE *ret=NULL;
-       unsigned char *q,*p,*max;
-       int inf,tag,xclass;
-       long len;
-
-       if ((a == NULL) || ((*a) == NULL))
-               {
-               if ((ret=ASN1_TYPE_new()) == NULL) goto err;
-               }
-       else
-               ret=(*a);
-
-       p= *pp;
-       q=p;
-       max=(p+length);
-
-       inf=ASN1_get_object(&q,&len,&tag,&xclass,length);
-       if (inf & 0x80) goto err;
-       /* If not universal tag we've no idea what it is */
-       if(xclass != V_ASN1_UNIVERSAL) tag = V_ASN1_OTHER;
-       
-       ASN1_TYPE_component_free(ret);
-
-       switch (tag)
-               {
-       case V_ASN1_NULL:
-               p=q;
-               ret->value.ptr=NULL;
-               break;
-       case V_ASN1_INTEGER:
-               if ((ret->value.integer=
-                       d2i_ASN1_INTEGER(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_ENUMERATED:
-               if ((ret->value.enumerated=
-                       d2i_ASN1_ENUMERATED(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_BIT_STRING:
-               if ((ret->value.bit_string=
-                       d2i_ASN1_BIT_STRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_OCTET_STRING:
-               if ((ret->value.octet_string=
-                       d2i_ASN1_OCTET_STRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_VISIBLESTRING:
-               if ((ret->value.visiblestring=
-                       d2i_ASN1_VISIBLESTRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_UTF8STRING:
-               if ((ret->value.utf8string=
-                       d2i_ASN1_UTF8STRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_OBJECT:
-               if ((ret->value.object=
-                       d2i_ASN1_OBJECT(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_PRINTABLESTRING:
-               if ((ret->value.printablestring=
-                       d2i_ASN1_PRINTABLESTRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_T61STRING:
-               if ((ret->value.t61string=
-                       M_d2i_ASN1_T61STRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_IA5STRING:
-               if ((ret->value.ia5string=
-                       M_d2i_ASN1_IA5STRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_GENERALSTRING:
-               if ((ret->value.generalstring=
-                       M_d2i_ASN1_GENERALSTRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_UNIVERSALSTRING:
-               if ((ret->value.universalstring=
-                       M_d2i_ASN1_UNIVERSALSTRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_BMPSTRING:
-               if ((ret->value.bmpstring=
-                       M_d2i_ASN1_BMPSTRING(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_UTCTIME:
-               if ((ret->value.utctime=
-                       d2i_ASN1_UTCTIME(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_GENERALIZEDTIME:
-               if ((ret->value.generalizedtime=
-                       d2i_ASN1_GENERALIZEDTIME(NULL,&p,max-p)) == NULL)
-                       goto err;
-               break;
-       case V_ASN1_SET:
-       case V_ASN1_SEQUENCE:
-       case V_ASN1_OTHER:
-       default:
-               /* Sets and sequences are left complete */
-               if ((ret->value.set=ASN1_STRING_new()) == NULL) goto err;
-               ret->value.set->type=tag;
-               len+=(q-p);
-               if (!ASN1_STRING_set(ret->value.set,p,(int)len)) goto err;
-               p+=len;
-               break;
-               }
-
-       ret->type=tag;
-       if (a != NULL) (*a)=ret;
-       *pp=p;
-       return(ret);
-err:
-       if ((ret != NULL) && ((a == NULL) || (*a != ret))) ASN1_TYPE_free(ret);
-       return(NULL);
-       }
-
-ASN1_TYPE *ASN1_TYPE_new(void)
-       {
-       ASN1_TYPE *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,ASN1_TYPE);
-       ret->type= -1;
-       ret->value.ptr=NULL;
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_ASN1_TYPE_NEW);
-       }
-
-void ASN1_TYPE_free(ASN1_TYPE *a)
-       {
-       if (a == NULL) return;
-       ASN1_TYPE_component_free(a);
-       OPENSSL_free(a);
-       }
 
 int ASN1_TYPE_get(ASN1_TYPE *a)
        {
@@ -299,54 +71,11 @@ int ASN1_TYPE_get(ASN1_TYPE *a)
 void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value)
        {
        if (a->value.ptr != NULL)
-               ASN1_TYPE_component_free(a);
+               ASN1_primitive_free((ASN1_VALUE **)&a, NULL);
        a->type=type;
        a->value.ptr=value;
        }
 
-static void ASN1_TYPE_component_free(ASN1_TYPE *a)
-       {
-       if (a == NULL) return;
-
-       if (a->value.ptr != NULL)
-               {
-               switch (a->type)
-                       {
-               case V_ASN1_OBJECT:
-                       ASN1_OBJECT_free(a->value.object);
-                       break;
-               case V_ASN1_NULL:
-                       break;
-               case V_ASN1_INTEGER:
-               case V_ASN1_NEG_INTEGER:
-               case V_ASN1_ENUMERATED:
-               case V_ASN1_NEG_ENUMERATED:
-               case V_ASN1_BIT_STRING:
-               case V_ASN1_OCTET_STRING:
-               case V_ASN1_SEQUENCE:
-               case V_ASN1_SET:
-               case V_ASN1_NUMERICSTRING:
-               case V_ASN1_PRINTABLESTRING:
-               case V_ASN1_T61STRING:
-               case V_ASN1_VIDEOTEXSTRING:
-               case V_ASN1_IA5STRING:
-               case V_ASN1_UTCTIME:
-               case V_ASN1_GENERALIZEDTIME:
-               case V_ASN1_GRAPHICSTRING:
-               case V_ASN1_VISIBLESTRING:
-               case V_ASN1_GENERALSTRING:
-               case V_ASN1_UNIVERSALSTRING:
-               case V_ASN1_BMPSTRING:
-               case V_ASN1_UTF8STRING:
-               case V_ASN1_OTHER:
-               default:
-                       ASN1_STRING_free((ASN1_STRING *)a->value.ptr);
-                       break;
-                       }
-               a->type=0;
-               a->value.ptr=NULL;
-               }
-       }
 
 IMPLEMENT_STACK_OF(ASN1_TYPE)
 IMPLEMENT_ASN1_SET_OF(ASN1_TYPE)
index d381c9e..6ddeaff 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_UTCTIME *ASN1_UTCTIME_new(void)
-{ return M_ASN1_UTCTIME_new(); }
-
-void ASN1_UTCTIME_free(ASN1_UTCTIME *x)
-{ M_ASN1_UTCTIME_free(x); }
-
+#if 0
 int i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **pp)
        {
 #ifndef CHARSET_EBCDIC
@@ -119,6 +114,8 @@ err:
        return(NULL);
        }
 
+#endif
+
 int ASN1_UTCTIME_check(ASN1_UTCTIME *d)
        {
        static int min[8]={ 0, 1, 1, 0, 0, 0, 0, 0};
index 854278f..508e11e 100644 (file)
 #include "cryptlib.h"
 #include <openssl/asn1.h>
 
-ASN1_UTF8STRING *ASN1_UTF8STRING_new(void)
-{ return M_ASN1_UTF8STRING_new();}
-
-void ASN1_UTF8STRING_free(ASN1_UTF8STRING *x)
-{ M_ASN1_UTF8STRING_free(x);}
-
-int i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a, unsigned char **pp)
-       {
-       return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,
-               V_ASN1_UTF8STRING,V_ASN1_UNIVERSAL));
-       }
-
-ASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, unsigned char **pp,
-            long length)
-       {
-       ASN1_UTF8STRING *ret=NULL;
-
-       ret=(ASN1_UTF8STRING *)d2i_ASN1_bytes((ASN1_STRING **)a,
-               pp,length,V_ASN1_UTF8STRING,V_ASN1_UNIVERSAL);
-       if (ret == NULL)
-               {
-               ASN1err(ASN1_F_D2I_ASN1_UTF8STRING,ERR_R_NESTED_ASN1_ERROR);
-               return(NULL);
-               }
-       return(ret);
-       }
-
 
 /* UTF8 utilities */
 
diff --git a/crypto/asn1/a_vis.c b/crypto/asn1/a_vis.c
deleted file mode 100644 (file)
index 5cfc080..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* crypto/asn1/a_vis.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1.h>
-
-ASN1_VISIBLESTRING *ASN1_VISIBLESTRING_new(void)
-{ return M_ASN1_VISIBLESTRING_new(); }
-
-void ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *x)
-{ M_ASN1_VISIBLESTRING_free(x); }
-
-int i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a, unsigned char **pp)
-       {
-       return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,
-               V_ASN1_VISIBLESTRING,V_ASN1_UNIVERSAL));
-       }
-
-ASN1_VISIBLESTRING *d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a,
-            unsigned char **pp, long length)
-       {
-       ASN1_VISIBLESTRING *ret=NULL;
-
-       ret=(ASN1_VISIBLESTRING *)d2i_ASN1_bytes((ASN1_STRING **)a,
-               pp,length,V_ASN1_VISIBLESTRING,V_ASN1_UNIVERSAL);
-       if (ret == NULL)
-               {
-               ASN1err(ASN1_F_D2I_ASN1_VISIBLESTRING,ERR_R_NESTED_ASN1_ERROR);
-               return(NULL);
-               }
-       return(ret);
-       }
-
index 3daf4e4..a068035 100644 (file)
@@ -84,6 +84,7 @@ extern "C" {
 
 #define V_ASN1_APP_CHOOSE              -2      /* let the recipient choose */
 #define V_ASN1_OTHER                   -3      /* used in ASN1_TYPE */
+#define V_ASN1_ANY                     -4      /* used in ASN1 template code */
 
 #define V_ASN1_NEG                     0x100   /* negative flag */
 
@@ -136,6 +137,8 @@ extern "C" {
 #define B_ASN1_BMPSTRING       0x0800
 #define B_ASN1_UNKNOWN         0x1000
 #define B_ASN1_UTF8STRING      0x2000
+#define B_ASN1_UTCTIME         0x4000
+#define B_ASN1_GENERALIZEDTIME 0x8000
 
 /* For use with ASN1_mbstring_copy() */
 #define MBSTRING_FLAG          0x1000
@@ -193,6 +196,21 @@ typedef struct asn1_string_st
        long flags;
        } ASN1_STRING;
 
+/* ASN1_ENCODING structure: this is used to save the received
+ * encoding of an ASN1 type. This is useful to get round
+ * problems with invalid encodings which can break signatures.
+ */
+
+typedef struct ASN1_ENCODING_st
+       {
+       unsigned char *enc;     /* DER encoding */
+       long len;               /* Length of encoding */
+       int modified;            /* set to 1 if 'enc' is invalid */
+       } ASN1_ENCODING;
+
+/* Used with ASN1 LONG type: if a long is set to this it is omitted */
+#define ASN1_LONG_UNDEF        0x7fffffffL
+
 #define STABLE_FLAGS_MALLOC    0x01
 #define STABLE_NO_MASK         0x02
 #define DIRSTRING_TYPE \
@@ -237,6 +255,7 @@ DECLARE_STACK_OF(ASN1_STRING_TABLE)
 #define ASN1_VISIBLESTRING     ASN1_STRING
 #define ASN1_UTF8STRING                ASN1_STRING
 #define ASN1_BOOLEAN           int
+#define ASN1_NULL              int
 #else
 typedef struct asn1_string_st ASN1_INTEGER;
 typedef struct asn1_string_st ASN1_ENUMERATED;
@@ -254,9 +273,40 @@ typedef struct asn1_string_st ASN1_GENERALIZEDTIME;
 typedef struct asn1_string_st ASN1_VISIBLESTRING;
 typedef struct asn1_string_st ASN1_UTF8STRING;
 typedef int ASN1_BOOLEAN;
+typedef int ASN1_NULL;
 #endif
 
-typedef int ASN1_NULL;
+/* Declarations for template structures: for full definitions
+ * see asn1t.h
+ */
+typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
+typedef struct ASN1_ITEM_st ASN1_ITEM;
+typedef struct ASN1_TLC_st ASN1_TLC;
+/* This is just an opaque pointer */
+typedef struct ASN1_VALUE_st ASN1_VALUE;
+
+/* Declare ASN1 functions: the implement macro in in asn1t.h */
+
+#define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type)
+
+#define DECLARE_ASN1_FUNCTIONS_name(type, name) \
+       type *name##_new(void); \
+       void name##_free(type *a); \
+       DECLARE_ASN1_ENCODE_FUNCTIONS(type, name)
+
+#define        DECLARE_ASN1_ENCODE_FUNCTIONS(type, name) \
+       type *d2i_##name(type **a, unsigned char **in, long len); \
+       int i2d_##name(type *a, unsigned char **out); \
+       extern const ASN1_ITEM name##_it;
+
+#define        DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
+       type *d2i_##name(type **a, const unsigned char **in, long len); \
+       int i2d_##name(const type *a, unsigned char **out); \
+       extern const ASN1_ITEM name##_it;
+
+#define DECLARE_ASN1_FUNCTIONS_const(name) \
+       name *name##_new(void); \
+       void name##_free(name *a);
 
 /* Parameters used by ASN1_STRING_print_ex() */
 
@@ -438,12 +488,11 @@ typedef struct BIT_STRING_BITNAME_st {
                i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\
                V_ASN1_UNIVERSAL)
 
-#define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING)
-#define M_ASN1_PRINTABLE_free(a)       ASN1_STRING_free((ASN1_STRING *)a)
-#define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
-               pp,a->type,V_ASN1_UNIVERSAL)
-#define M_d2i_ASN1_PRINTABLE(a,pp,l) \
-               d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
+#define B_ASN1_TIME \
+                       B_ASN1_UTCTIME | \
+                       B_ASN1_GENERALIZEDTIME
+
+#define B_ASN1_PRINTABLE \
                        B_ASN1_PRINTABLESTRING| \
                        B_ASN1_T61STRING| \
                        B_ASN1_IA5STRING| \
@@ -451,7 +500,28 @@ typedef struct BIT_STRING_BITNAME_st {
                        B_ASN1_UNIVERSALSTRING|\
                        B_ASN1_BMPSTRING|\
                        B_ASN1_UTF8STRING|\
-                       B_ASN1_UNKNOWN)
+                       B_ASN1_UNKNOWN
+
+#define B_ASN1_DIRECTORYSTRING \
+                       B_ASN1_PRINTABLESTRING| \
+                       B_ASN1_TELETEXSTRING|\
+                       B_ASN1_BMPSTRING|\
+                       B_ASN1_UNIVERSALSTRING|\
+                       B_ASN1_UTF8STRING
+
+#define B_ASN1_DISPLAYTEXT \
+                       B_ASN1_IA5STRING| \
+                       B_ASN1_VISIBLESTRING| \
+                       B_ASN1_BMPSTRING|\
+                       B_ASN1_UTF8STRING
+
+#define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING)
+#define M_ASN1_PRINTABLE_free(a)       ASN1_STRING_free((ASN1_STRING *)a)
+#define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
+               pp,a->type,V_ASN1_UNIVERSAL)
+#define M_d2i_ASN1_PRINTABLE(a,pp,l) \
+               d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
+                       B_ASN1_PRINTABLE)
 
 #define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING)
 #define M_DIRECTORYSTRING_free(a)      ASN1_STRING_free((ASN1_STRING *)a)
@@ -459,11 +529,7 @@ typedef struct BIT_STRING_BITNAME_st {
                                                pp,a->type,V_ASN1_UNIVERSAL)
 #define M_d2i_DIRECTORYSTRING(a,pp,l) \
                d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
-                       B_ASN1_PRINTABLESTRING| \
-                       B_ASN1_TELETEXSTRING|\
-                       B_ASN1_BMPSTRING|\
-                       B_ASN1_UNIVERSALSTRING|\
-                       B_ASN1_UTF8STRING)
+                       B_ASN1_DIRECTORYSTRING)
 
 #define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING)
 #define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a)
@@ -471,9 +537,7 @@ typedef struct BIT_STRING_BITNAME_st {
                                                pp,a->type,V_ASN1_UNIVERSAL)
 #define M_d2i_DISPLAYTEXT(a,pp,l) \
                d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
-                       B_ASN1_VISIBLESTRING| \
-                       B_ASN1_BMPSTRING|\
-                       B_ASN1_UTF8STRING)
+                       B_ASN1_DISPLAYTEXT)
 
 #define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\
                ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING)
@@ -577,10 +641,8 @@ typedef struct BIT_STRING_BITNAME_st {
 #define IS_SEQUENCE    0
 #define IS_SET         1
 
-ASN1_TYPE *    ASN1_TYPE_new(void );
-void           ASN1_TYPE_free(ASN1_TYPE *a);
-int            i2d_ASN1_TYPE(ASN1_TYPE *a,unsigned char **pp);
-ASN1_TYPE *    d2i_ASN1_TYPE(ASN1_TYPE **a,unsigned char **pp,long length);
+DECLARE_ASN1_FUNCTIONS(ASN1_TYPE)
+
 int ASN1_TYPE_get(ASN1_TYPE *a);
 void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
 
@@ -608,12 +670,8 @@ void ASN1_STRING_length_set(ASN1_STRING *x, int n);
 int ASN1_STRING_type(ASN1_STRING *x);
 unsigned char * ASN1_STRING_data(ASN1_STRING *x);
 
-ASN1_BIT_STRING *      ASN1_BIT_STRING_new(void);
-void           ASN1_BIT_STRING_free(ASN1_BIT_STRING *a);
-int            i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp);
+DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING)
 int            i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp);
-ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp,
-                       long length);
 ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp,
                        long length);
 int            ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d,
@@ -632,12 +690,8 @@ int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value,
 int            i2d_ASN1_BOOLEAN(int a,unsigned char **pp);
 int            d2i_ASN1_BOOLEAN(int *a,unsigned char **pp,long length);
 
-ASN1_INTEGER * ASN1_INTEGER_new(void);
-void           ASN1_INTEGER_free(ASN1_INTEGER *a);
-int            i2d_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp);
+DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER)
 int            i2c_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp);
-ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp,
-                       long length);
 ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp,
                        long length);
 ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,unsigned char **pp,
@@ -645,11 +699,7 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,unsigned char **pp,
 ASN1_INTEGER * ASN1_INTEGER_dup(ASN1_INTEGER *x);
 int ASN1_INTEGER_cmp(ASN1_INTEGER *x, ASN1_INTEGER *y);
 
-ASN1_ENUMERATED *      ASN1_ENUMERATED_new(void);
-void           ASN1_ENUMERATED_free(ASN1_ENUMERATED *a);
-int            i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a,unsigned char **pp);
-ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a,unsigned char **pp,
-                       long length);
+DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED)
 
 int ASN1_UTCTIME_check(ASN1_UTCTIME *a);
 ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,time_t t);
@@ -663,90 +713,30 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a);
 ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,time_t t);
 int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, char *str); 
 
-ASN1_OCTET_STRING *    ASN1_OCTET_STRING_new(void);
-void           ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a);
-int            i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a,unsigned char **pp);
-ASN1_OCTET_STRING *d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a,
-                       unsigned char **pp,long length);
+DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING)
 ASN1_OCTET_STRING *    ASN1_OCTET_STRING_dup(ASN1_OCTET_STRING *a);
 int    ASN1_OCTET_STRING_cmp(ASN1_OCTET_STRING *a, ASN1_OCTET_STRING *b);
 int    ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, unsigned char *data, int len);
 
-ASN1_VISIBLESTRING *   ASN1_VISIBLESTRING_new(void);
-void           ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a);
-int    i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a,unsigned char **pp);
-ASN1_VISIBLESTRING *d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a,
-                       unsigned char **pp,long length);
-
-ASN1_UTF8STRING *      ASN1_UTF8STRING_new(void);
-void           ASN1_UTF8STRING_free(ASN1_UTF8STRING *a);
-int            i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a,unsigned char **pp);
-ASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a,
-                       unsigned char **pp,long length);
-
-ASN1_NULL *    ASN1_NULL_new(void);
-void           ASN1_NULL_free(ASN1_NULL *a);
-int            i2d_ASN1_NULL(ASN1_NULL *a,unsigned char **pp);
-ASN1_NULL *d2i_ASN1_NULL(ASN1_NULL **a, unsigned char **pp,long length);
-
-ASN1_BMPSTRING *       ASN1_BMPSTRING_new(void);
-void           ASN1_BMPSTRING_free(ASN1_BMPSTRING *a);
-int i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **pp);
-ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, unsigned char **pp,
-       long length);
-
+DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING)
+DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING)
+DECLARE_ASN1_FUNCTIONS(ASN1_NULL)
+DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING)
 
 int UTF8_getc(const unsigned char *str, int len, unsigned long *val);
 int UTF8_putc(unsigned char *str, int len, unsigned long value);
 
-int i2d_ASN1_PRINTABLE(ASN1_STRING *a,unsigned char **pp);
-ASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a,
-       unsigned char **pp, long l);
-
-ASN1_PRINTABLESTRING * ASN1_PRINTABLESTRING_new(void);
-void           ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a);
-ASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a,
-       unsigned char **pp, long l);
-int i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **pp);
-
-ASN1_STRING *  DIRECTORYSTRING_new(void);
-void           DIRECTORYSTRING_free(ASN1_STRING *a);
-int    i2d_DIRECTORYSTRING(ASN1_STRING *a,unsigned char **pp);
-ASN1_STRING *d2i_DIRECTORYSTRING(ASN1_STRING **a, unsigned char **pp,
-                                                                long length);
-
-ASN1_STRING *  DISPLAYTEXT_new(void);
-void           DISPLAYTEXT_free(ASN1_STRING *a);
-int    i2d_DISPLAYTEXT(ASN1_STRING *a,unsigned char **pp);
-ASN1_STRING *d2i_DISPLAYTEXT(ASN1_STRING **a, unsigned char **pp, long length);
-
-ASN1_T61STRING *       ASN1_T61STRING_new(void);
-void           ASN1_T61STRING_free(ASN1_IA5STRING *a);
-ASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a,
-       unsigned char **pp, long l);
-
-ASN1_IA5STRING *       ASN1_IA5STRING_new(void);
-void           ASN1_IA5STRING_free(ASN1_IA5STRING *a);
-int i2d_ASN1_IA5STRING(ASN1_IA5STRING *a,unsigned char **pp);
-ASN1_IA5STRING *d2i_ASN1_IA5STRING(ASN1_IA5STRING **a,
-       unsigned char **pp, long l);
-
-ASN1_UTCTIME * ASN1_UTCTIME_new(void);
-void           ASN1_UTCTIME_free(ASN1_UTCTIME *a);
-int            i2d_ASN1_UTCTIME(ASN1_UTCTIME *a,unsigned char **pp);
-ASN1_UTCTIME * d2i_ASN1_UTCTIME(ASN1_UTCTIME **a,unsigned char **pp,
-                       long length);
+DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE)
 
-ASN1_GENERALIZEDTIME * ASN1_GENERALIZEDTIME_new(void);
-void           ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a);
-int            i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a,unsigned char **pp);
-ASN1_GENERALIZEDTIME * d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a,unsigned char **pp,
-                       long length);
+DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING)
+DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT)
+DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING)
+DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING)
+DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING)
+DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME)
+DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME)
+DECLARE_ASN1_FUNCTIONS(ASN1_TIME)
 
-ASN1_TIME *    ASN1_TIME_new(void);
-void           ASN1_TIME_free(ASN1_TIME *a);
-int            i2d_ASN1_TIME(ASN1_TIME *a,unsigned char **pp);
-ASN1_TIME *    d2i_ASN1_TIME(ASN1_TIME **a,unsigned char **pp, long length);
 ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s,time_t t);
 
 int            i2d_ASN1_SET(STACK *a, unsigned char **pp,
@@ -787,6 +777,7 @@ int ASN1_PRINTABLE_type(unsigned char *s, int max);
 int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass);
 ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, unsigned char **pp,
        long length, int Ptag, int Pclass);
+unsigned long ASN1_tag2bit(int tag);
 /* type is one or more of the B_ASN1_ values. */
 ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a,unsigned char **pp,
                long length,int type);
@@ -873,6 +864,15 @@ ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid);
 int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long);
 void ASN1_STRING_TABLE_cleanup(void);
 
+/* ASN1 template functions */
+
+/* Old API compatible functions */
+ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
+void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
+ASN1_VALUE * ASN1_item_d2i(ASN1_VALUE **val, unsigned char **in, long len, const ASN1_ITEM *it);
+int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
+
+
 /* BEGIN ERROR CODES */
 /* The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.
@@ -882,297 +882,224 @@ void ASN1_STRING_TABLE_cleanup(void);
 
 /* Function codes. */
 #define ASN1_F_A2D_ASN1_OBJECT                          100
-#define ASN1_F_A2I_ASN1_ENUMERATED                      236
-#define ASN1_F_A2I_ASN1_INTEGER                                 101
-#define ASN1_F_A2I_ASN1_STRING                          102
-#define ASN1_F_ACCESS_DESCRIPTION_NEW                   291
-#define ASN1_F_ASN1_COLLATE_PRIMITIVE                   103
-#define ASN1_F_ASN1_D2I_BIO                             104
-#define ASN1_F_ASN1_D2I_FP                              105
-#define ASN1_F_ASN1_DUP                                         106
-#define ASN1_F_ASN1_ENUMERATED_SET                      232
-#define ASN1_F_ASN1_ENUMERATED_TO_BN                    233
-#define ASN1_F_ASN1_GENERALIZEDTIME_NEW                         222
-#define ASN1_F_ASN1_GET_OBJECT                          107
-#define ASN1_F_ASN1_HEADER_NEW                          108
-#define ASN1_F_ASN1_I2D_BIO                             109
-#define ASN1_F_ASN1_I2D_FP                              110
-#define ASN1_F_ASN1_INTEGER_SET                                 111
-#define ASN1_F_ASN1_INTEGER_TO_BN                       112
-#define ASN1_F_ASN1_MBSTRING_COPY                       282
-#define ASN1_F_ASN1_OBJECT_NEW                          113
-#define ASN1_F_ASN1_PACK_STRING                                 245
-#define ASN1_F_ASN1_PBE_SET                             253
-#define ASN1_F_ASN1_SEQ_PACK                            246
-#define ASN1_F_ASN1_SEQ_UNPACK                          247
-#define ASN1_F_ASN1_SIGN                                114
-#define ASN1_F_ASN1_STRING_NEW                          115
-#define ASN1_F_ASN1_STRING_TABLE_ADD                    283
-#define ASN1_F_ASN1_STRING_TYPE_NEW                     116
-#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING            117
-#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING                118
-#define ASN1_F_ASN1_TYPE_NEW                            119
-#define ASN1_F_ASN1_UNPACK_STRING                       248
-#define ASN1_F_ASN1_UTCTIME_NEW                                 120
-#define ASN1_F_ASN1_VERIFY                              121
-#define ASN1_F_AUTHORITY_KEYID_NEW                      237
-#define ASN1_F_BASIC_CONSTRAINTS_NEW                    226
-#define ASN1_F_BN_TO_ASN1_ENUMERATED                    234
-#define ASN1_F_BN_TO_ASN1_INTEGER                       122
-#define ASN1_F_D2I_ACCESS_DESCRIPTION                   284
-#define ASN1_F_D2I_ASN1_BIT_STRING                      123
-#define ASN1_F_D2I_ASN1_BMPSTRING                       124
-#define ASN1_F_D2I_ASN1_BOOLEAN                                 125
-#define ASN1_F_D2I_ASN1_BYTES                           126
-#define ASN1_F_D2I_ASN1_ENUMERATED                      235
-#define ASN1_F_D2I_ASN1_GENERALIZEDTIME                         223
-#define ASN1_F_D2I_ASN1_HEADER                          127
-#define ASN1_F_D2I_ASN1_INTEGER                                 128
-#define ASN1_F_D2I_ASN1_NULL                            292
-#define ASN1_F_D2I_ASN1_OBJECT                          129
-#define ASN1_F_D2I_ASN1_OCTET_STRING                    130
-#define ASN1_F_D2I_ASN1_PRINT_TYPE                      131
-#define ASN1_F_D2I_ASN1_SET                             132
-#define ASN1_F_D2I_ASN1_TIME                            224
-#define ASN1_F_D2I_ASN1_TYPE                            133
-#define ASN1_F_D2I_ASN1_TYPE_BYTES                      134
-#define ASN1_F_D2I_ASN1_UINTEGER                        280
-#define ASN1_F_D2I_ASN1_UTCTIME                                 135
-#define ASN1_F_D2I_ASN1_UTF8STRING                      266
-#define ASN1_F_D2I_ASN1_VISIBLESTRING                   267
-#define ASN1_F_D2I_AUTHORITY_KEYID                      238
-#define ASN1_F_D2I_BASIC_CONSTRAINTS                    227
-#define ASN1_F_D2I_DHPARAMS                             136
-#define ASN1_F_D2I_DIST_POINT                           276
-#define ASN1_F_D2I_DIST_POINT_NAME                      277
-#define ASN1_F_D2I_DSAPARAMS                            137
-#define ASN1_F_D2I_DSAPRIVATEKEY                        138
-#define ASN1_F_D2I_DSAPUBLICKEY                                 139
-#define ASN1_F_D2I_GENERAL_NAME                                 230
-#define ASN1_F_D2I_NETSCAPE_CERT_SEQUENCE               228
-#define ASN1_F_D2I_NETSCAPE_PKEY                        140
-#define ASN1_F_D2I_NETSCAPE_RSA                                 141
-#define ASN1_F_D2I_NETSCAPE_RSA_2                       142
-#define ASN1_F_D2I_NETSCAPE_SPKAC                       143
-#define ASN1_F_D2I_NETSCAPE_SPKI                        144
-#define ASN1_F_D2I_NOTICEREF                            268
-#define ASN1_F_D2I_OCSP_BASICRESP                       293
-#define ASN1_F_D2I_OCSP_CERTID                          294
-#define ASN1_F_D2I_OCSP_CERTSTATUS                      295
-#define ASN1_F_D2I_OCSP_CRLID                           296
-#define ASN1_F_D2I_OCSP_ONEREQ                          297
-#define ASN1_F_D2I_OCSP_REQINFO                                 298
-#define ASN1_F_D2I_OCSP_REQUEST                                 299
-#define ASN1_F_D2I_OCSP_RESPBYTES                       300
-#define ASN1_F_D2I_OCSP_RESPDATA                        301
-#define ASN1_F_D2I_OCSP_RESPID                          302
-#define ASN1_F_D2I_OCSP_RESPONSE                        303
-#define ASN1_F_D2I_OCSP_REVOKEDINFO                     304
-#define ASN1_F_D2I_OCSP_SERVICELOC                      305
-#define ASN1_F_D2I_OCSP_SIGNATURE                       306
-#define ASN1_F_D2I_OCSP_SINGLERESP                      307
-#define ASN1_F_D2I_OTHERNAME                            287
-#define ASN1_F_D2I_PBE2PARAM                            262
-#define ASN1_F_D2I_PBEPARAM                             249
-#define ASN1_F_D2I_PBKDF2PARAM                          263
-#define ASN1_F_D2I_PKCS12                               254
-#define ASN1_F_D2I_PKCS12_BAGS                          255
-#define ASN1_F_D2I_PKCS12_MAC_DATA                      256
-#define ASN1_F_D2I_PKCS12_SAFEBAG                       257
-#define ASN1_F_D2I_PKCS7                                145
-#define ASN1_F_D2I_PKCS7_DIGEST                                 146
-#define ASN1_F_D2I_PKCS7_ENCRYPT                        147
-#define ASN1_F_D2I_PKCS7_ENC_CONTENT                    148
-#define ASN1_F_D2I_PKCS7_ENVELOPE                       149
-#define ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL              150
-#define ASN1_F_D2I_PKCS7_RECIP_INFO                     151
-#define ASN1_F_D2I_PKCS7_SIGNED                                 152
-#define ASN1_F_D2I_PKCS7_SIGNER_INFO                    153
-#define ASN1_F_D2I_PKCS7_SIGN_ENVELOPE                  154
-#define ASN1_F_D2I_PKCS8_PRIV_KEY_INFO                  250
-#define ASN1_F_D2I_PKEY_USAGE_PERIOD                    239
-#define ASN1_F_D2I_POLICYINFO                           269
-#define ASN1_F_D2I_POLICYQUALINFO                       270
-#define ASN1_F_D2I_PRIVATEKEY                           155
-#define ASN1_F_D2I_PUBLICKEY                            156
-#define ASN1_F_D2I_RSAPRIVATEKEY                        157
-#define ASN1_F_D2I_RSAPUBLICKEY                                 158
-#define ASN1_F_D2I_SXNET                                241
-#define ASN1_F_D2I_SXNETID                              243
-#define ASN1_F_D2I_USERNOTICE                           271
-#define ASN1_F_D2I_X509                                         159
-#define ASN1_F_D2I_X509_ALGOR                           160
-#define ASN1_F_D2I_X509_ATTRIBUTE                       161
-#define ASN1_F_D2I_X509_CERT_AUX                        285
-#define ASN1_F_D2I_X509_CINF                            162
-#define ASN1_F_D2I_X509_CRL                             163
-#define ASN1_F_D2I_X509_CRL_INFO                        164
-#define ASN1_F_D2I_X509_EXTENSION                       165
-#define ASN1_F_D2I_X509_KEY                             166
-#define ASN1_F_D2I_X509_NAME                            167
-#define ASN1_F_D2I_X509_NAME_ENTRY                      168
-#define ASN1_F_D2I_X509_PKEY                            169
-#define ASN1_F_D2I_X509_PUBKEY                          170
-#define ASN1_F_D2I_X509_REQ                             171
-#define ASN1_F_D2I_X509_REQ_INFO                        172
-#define ASN1_F_D2I_X509_REVOKED                                 173
-#define ASN1_F_D2I_X509_SIG                             174
-#define ASN1_F_D2I_X509_VAL                             175
-#define ASN1_F_DIST_POINT_NAME_NEW                      278
-#define ASN1_F_DIST_POINT_NEW                           279
-#define ASN1_F_GENERAL_NAME_NEW                                 231
-#define ASN1_F_I2D_ASN1_HEADER                          176
-#define ASN1_F_I2D_ASN1_TIME                            225
-#define ASN1_F_I2D_DHPARAMS                             177
-#define ASN1_F_I2D_DSAPARAMS                            178
-#define ASN1_F_I2D_DSAPRIVATEKEY                        179
-#define ASN1_F_I2D_DSAPUBLICKEY                                 180
-#define ASN1_F_I2D_DSA_PUBKEY                           290
-#define ASN1_F_I2D_NETSCAPE_RSA                                 181
-#define ASN1_F_I2D_PKCS7                                182
-#define ASN1_F_I2D_PRIVATEKEY                           183
-#define ASN1_F_I2D_PUBLICKEY                            184
-#define ASN1_F_I2D_RSAPRIVATEKEY                        185
-#define ASN1_F_I2D_RSAPUBLICKEY                                 186
-#define ASN1_F_I2D_RSA_PUBKEY                           289
-#define ASN1_F_I2D_X509_ATTRIBUTE                       187
-#define ASN1_F_I2T_ASN1_OBJECT                          188
-#define ASN1_F_NETSCAPE_CERT_SEQUENCE_NEW               229
-#define ASN1_F_NETSCAPE_PKEY_NEW                        189
-#define ASN1_F_NETSCAPE_SPKAC_NEW                       190
-#define ASN1_F_NETSCAPE_SPKI_NEW                        191
-#define ASN1_F_NOTICEREF_NEW                            272
-#define ASN1_F_OCSP_BASICRESP_NEW                       308
-#define ASN1_F_OCSP_CERTID_NEW                          309
-#define ASN1_F_OCSP_CERTSTATUS_NEW                      310
-#define ASN1_F_OCSP_CRLID_NEW                           311
-#define ASN1_F_OCSP_ONEREQ_NEW                          312
-#define ASN1_F_OCSP_REQINFO_NEW                                 313
-#define ASN1_F_OCSP_REQUEST_NEW                                 314
-#define ASN1_F_OCSP_RESPBYTES_NEW                       315
-#define ASN1_F_OCSP_RESPDATA_NEW                        316
-#define ASN1_F_OCSP_RESPID_NEW                          317
-#define ASN1_F_OCSP_RESPONSE_NEW                        318
-#define ASN1_F_OCSP_REVOKEDINFO_NEW                     319
-#define ASN1_F_OCSP_SERVICELOC_NEW                      320
-#define ASN1_F_OCSP_SIGNATURE_NEW                       321
-#define ASN1_F_OCSP_SINGLERESP_NEW                      322
-#define ASN1_F_OTHERNAME_NEW                            288
-#define ASN1_F_PBE2PARAM_NEW                            264
-#define ASN1_F_PBEPARAM_NEW                             251
-#define ASN1_F_PBKDF2PARAM_NEW                          265
-#define ASN1_F_PKCS12_BAGS_NEW                          258
-#define ASN1_F_PKCS12_MAC_DATA_NEW                      259
-#define ASN1_F_PKCS12_NEW                               260
-#define ASN1_F_PKCS12_SAFEBAG_NEW                       261
-#define ASN1_F_PKCS5_PBE2_SET                           281
-#define ASN1_F_PKCS7_DIGEST_NEW                                 192
-#define ASN1_F_PKCS7_ENCRYPT_NEW                        193
-#define ASN1_F_PKCS7_ENC_CONTENT_NEW                    194
-#define ASN1_F_PKCS7_ENVELOPE_NEW                       195
-#define ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW              196
-#define ASN1_F_PKCS7_NEW                                197
-#define ASN1_F_PKCS7_RECIP_INFO_NEW                     198
-#define ASN1_F_PKCS7_SIGNED_NEW                                 199
-#define ASN1_F_PKCS7_SIGNER_INFO_NEW                    200
-#define ASN1_F_PKCS7_SIGN_ENVELOPE_NEW                  201
-#define ASN1_F_PKCS8_PRIV_KEY_INFO_NEW                  252
-#define ASN1_F_PKEY_USAGE_PERIOD_NEW                    240
-#define ASN1_F_POLICYINFO_NEW                           273
-#define ASN1_F_POLICYQUALINFO_NEW                       274
-#define ASN1_F_SXNETID_NEW                              244
-#define ASN1_F_SXNET_NEW                                242
-#define ASN1_F_USERNOTICE_NEW                           275
-#define ASN1_F_X509_ALGOR_NEW                           202
-#define ASN1_F_X509_ATTRIBUTE_NEW                       203
-#define ASN1_F_X509_CERT_AUX_NEW                        286
-#define ASN1_F_X509_CINF_NEW                            204
-#define ASN1_F_X509_CRL_INFO_NEW                        205
-#define ASN1_F_X509_CRL_NEW                             206
-#define ASN1_F_X509_DHPARAMS_NEW                        207
-#define ASN1_F_X509_EXTENSION_NEW                       208
-#define ASN1_F_X509_INFO_NEW                            209
-#define ASN1_F_X509_KEY_NEW                             210
-#define ASN1_F_X509_NAME_ENTRY_NEW                      211
-#define ASN1_F_X509_NAME_NEW                            212
-#define ASN1_F_X509_NEW                                         213
-#define ASN1_F_X509_PKEY_NEW                            214
-#define ASN1_F_X509_PUBKEY_NEW                          215
-#define ASN1_F_X509_REQ_INFO_NEW                        216
-#define ASN1_F_X509_REQ_NEW                             217
-#define ASN1_F_X509_REVOKED_NEW                                 218
-#define ASN1_F_X509_SIG_NEW                             219
-#define ASN1_F_X509_VAL_FREE                            220
-#define ASN1_F_X509_VAL_NEW                             221
+#define ASN1_F_A2I_ASN1_ENUMERATED                      101
+#define ASN1_F_A2I_ASN1_INTEGER                                 102
+#define ASN1_F_A2I_ASN1_STRING                          103
+#define ASN1_F_ASN1_CHECK_TLEN                          104
+#define ASN1_F_ASN1_COLLATE_PRIMITIVE                   105
+#define ASN1_F_ASN1_COLLECT                             106
+#define ASN1_F_ASN1_D2I_BIO                             107
+#define ASN1_F_ASN1_D2I_EX_PRIMITIVE                    108
+#define ASN1_F_ASN1_D2I_FP                              109
+#define ASN1_F_ASN1_DO_ADB                              110
+#define ASN1_F_ASN1_DUP                                         111
+#define ASN1_F_ASN1_ENUMERATED_SET                      112
+#define ASN1_F_ASN1_ENUMERATED_TO_BN                    113
+#define ASN1_F_ASN1_GET_OBJECT                          114
+#define ASN1_F_ASN1_HEADER_NEW                          115
+#define ASN1_F_ASN1_I2D_BIO                             116
+#define ASN1_F_ASN1_I2D_FP                              117
+#define ASN1_F_ASN1_INTEGER_SET                                 118
+#define ASN1_F_ASN1_INTEGER_TO_BN                       119
+#define ASN1_F_ASN1_ITEM_EX_D2I                                 120
+#define ASN1_F_ASN1_ITEM_NEW                            121
+#define ASN1_F_ASN1_MBSTRING_COPY                       122
+#define ASN1_F_ASN1_OBJECT_NEW                          123
+#define ASN1_F_ASN1_PACK_STRING                                 124
+#define ASN1_F_ASN1_PBE_SET                             125
+#define ASN1_F_ASN1_SEQ_PACK                            126
+#define ASN1_F_ASN1_SEQ_UNPACK                          127
+#define ASN1_F_ASN1_SIGN                                128
+#define ASN1_F_ASN1_STRING_TABLE_ADD                    129
+#define ASN1_F_ASN1_STRING_TYPE_NEW                     130
+#define ASN1_F_ASN1_TEMPLATE_D2I                        131
+#define ASN1_F_ASN1_TEMPLATE_EX_D2I                     132
+#define ASN1_F_ASN1_TEMPLATE_NEW                        133
+#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING            134
+#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING                135
+#define ASN1_F_ASN1_UNPACK_STRING                       136
+#define ASN1_F_ASN1_VERIFY                              137
+#define ASN1_F_BN_TO_ASN1_ENUMERATED                    138
+#define ASN1_F_BN_TO_ASN1_INTEGER                       139
+#define ASN1_F_COLLECT_DATA                             140
+#define ASN1_F_D2I_ASN1_BIT_STRING                      141
+#define ASN1_F_D2I_ASN1_BMPSTRING                       178
+#define ASN1_F_D2I_ASN1_BOOLEAN                                 142
+#define ASN1_F_D2I_ASN1_BYTES                           143
+#define ASN1_F_D2I_ASN1_GENERALIZEDTIME                         144
+#define ASN1_F_D2I_ASN1_HEADER                          145
+#define ASN1_F_D2I_ASN1_INTEGER                                 146
+#define ASN1_F_D2I_ASN1_NULL                            179
+#define ASN1_F_D2I_ASN1_OBJECT                          147
+#define ASN1_F_D2I_ASN1_SET                             148
+#define ASN1_F_D2I_ASN1_TYPE_BYTES                      149
+#define ASN1_F_D2I_ASN1_UINTEGER                        150
+#define ASN1_F_D2I_ASN1_UTCTIME                                 151
+#define ASN1_F_D2I_ASN1_VISIBLESTRING                   180
+#define ASN1_F_D2I_DHPARAMS                             152
+#define ASN1_F_D2I_DSAPARAMS                            153
+#define ASN1_F_D2I_DSAPRIVATEKEY                        154
+#define ASN1_F_D2I_DSAPUBLICKEY                                 155
+#define ASN1_F_D2I_NETSCAPE_RSA                                 156
+#define ASN1_F_D2I_NETSCAPE_RSA_2                       157
+#define ASN1_F_D2I_OCSP_BASICRESP                       181
+#define ASN1_F_D2I_OCSP_CERTID                          182
+#define ASN1_F_D2I_OCSP_CERTSTATUS                      183
+#define ASN1_F_D2I_OCSP_CRLID                           184
+#define ASN1_F_D2I_OCSP_ONEREQ                          185
+#define ASN1_F_D2I_OCSP_REQINFO                                 186
+#define ASN1_F_D2I_OCSP_REQUEST                                 187
+#define ASN1_F_D2I_OCSP_RESPBYTES                       188
+#define ASN1_F_D2I_OCSP_RESPDATA                        189
+#define ASN1_F_D2I_OCSP_RESPID                          190
+#define ASN1_F_D2I_OCSP_RESPONSE                        191
+#define ASN1_F_D2I_OCSP_REVOKEDINFO                     192
+#define ASN1_F_D2I_OCSP_SERVICELOC                      193
+#define ASN1_F_D2I_OCSP_SIGNATURE                       194
+#define ASN1_F_D2I_OCSP_SINGLERESP                      195
+#define ASN1_F_D2I_PKCS12                               196
+#define ASN1_F_D2I_PKCS12_BAGS                          197
+#define ASN1_F_D2I_PKCS12_MAC_DATA                      198
+#define ASN1_F_D2I_PKCS12_SAFEBAG                       199
+#define ASN1_F_D2I_PKCS7                                200
+#define ASN1_F_D2I_PKCS7_DIGEST                                 201
+#define ASN1_F_D2I_PKCS7_ENCRYPT                        202
+#define ASN1_F_D2I_PKCS7_ENC_CONTENT                    203
+#define ASN1_F_D2I_PKCS7_ENVELOPE                       204
+#define ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL              205
+#define ASN1_F_D2I_PKCS7_RECIP_INFO                     206
+#define ASN1_F_D2I_PKCS7_SIGNED                                 207
+#define ASN1_F_D2I_PKCS7_SIGNER_INFO                    208
+#define ASN1_F_D2I_PKCS7_SIGN_ENVELOPE                  209
+#define ASN1_F_D2I_PRIVATEKEY                           158
+#define ASN1_F_D2I_PUBLICKEY                            159
+#define ASN1_F_D2I_X509                                         210
+#define ASN1_F_D2I_X509_CINF                            211
+#define ASN1_F_D2I_X509_NAME                            160
+#define ASN1_F_D2I_X509_PKEY                            161
+#define ASN1_F_I2D_ASN1_TIME                            162
+#define ASN1_F_I2D_DHPARAMS                             163
+#define ASN1_F_I2D_DSAPARAMS                            164
+#define ASN1_F_I2D_DSAPRIVATEKEY                        165
+#define ASN1_F_I2D_DSAPUBLICKEY                                 166
+#define ASN1_F_I2D_DSA_PUBKEY                           167
+#define ASN1_F_I2D_NETSCAPE_RSA                                 168
+#define ASN1_F_I2D_PRIVATEKEY                           169
+#define ASN1_F_I2D_PUBLICKEY                            170
+#define ASN1_F_I2D_RSA_PUBKEY                           171
+#define ASN1_F_LONG_C2I                                         172
+#define ASN1_F_OCSP_BASICRESP_NEW                       212
+#define ASN1_F_OCSP_CERTID_NEW                          213
+#define ASN1_F_OCSP_CERTSTATUS_NEW                      214
+#define ASN1_F_OCSP_CRLID_NEW                           215
+#define ASN1_F_OCSP_ONEREQ_NEW                          216
+#define ASN1_F_OCSP_REQINFO_NEW                                 217
+#define ASN1_F_OCSP_REQUEST_NEW                                 218
+#define ASN1_F_OCSP_RESPBYTES_NEW                       219
+#define ASN1_F_OCSP_RESPDATA_NEW                        220
+#define ASN1_F_OCSP_RESPID_NEW                          221
+#define ASN1_F_OCSP_RESPONSE_NEW                        222
+#define ASN1_F_OCSP_REVOKEDINFO_NEW                     223
+#define ASN1_F_OCSP_SERVICELOC_NEW                      224
+#define ASN1_F_OCSP_SIGNATURE_NEW                       225
+#define ASN1_F_OCSP_SINGLERESP_NEW                      226
+#define ASN1_F_PKCS12_BAGS_NEW                          227
+#define ASN1_F_PKCS12_MAC_DATA_NEW                      228
+#define ASN1_F_PKCS12_NEW                               229
+#define ASN1_F_PKCS12_SAFEBAG_NEW                       230
+#define ASN1_F_PKCS5_PBE2_SET                           173
+#define ASN1_F_PKCS7_DIGEST_NEW                                 231
+#define ASN1_F_PKCS7_ENCRYPT_NEW                        232
+#define ASN1_F_PKCS7_ENC_CONTENT_NEW                    233
+#define ASN1_F_PKCS7_ENVELOPE_NEW                       234
+#define ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW              235
+#define ASN1_F_PKCS7_NEW                                236
+#define ASN1_F_PKCS7_RECIP_INFO_NEW                     237
+#define ASN1_F_PKCS7_SIGNED_NEW                                 238
+#define ASN1_F_PKCS7_SIGNER_INFO_NEW                    239
+#define ASN1_F_PKCS7_SIGN_ENVELOPE_NEW                  240
+#define ASN1_F_X509_CINF_NEW                            241
+#define ASN1_F_X509_CRL_ADD0_REVOKED                    174
+#define ASN1_F_X509_INFO_NEW                            175
+#define ASN1_F_X509_NAME_NEW                            176
+#define ASN1_F_X509_NEW                                         242
+#define ASN1_F_X509_PKEY_NEW                            177
 
 /* Reason codes. */
-#define ASN1_R_BAD_CLASS                                100
-#define ASN1_R_BAD_OBJECT_HEADER                        101
-#define ASN1_R_BAD_PASSWORD_READ                        102
-#define ASN1_R_BAD_PKCS7_CONTENT                        103
-#define ASN1_R_BAD_PKCS7_TYPE                           104
-#define ASN1_R_BAD_TAG                                  105
-#define ASN1_R_BAD_TYPE                                         106
-#define ASN1_R_BN_LIB                                   107
-#define ASN1_R_BOOLEAN_IS_WRONG_LENGTH                  108
-#define ASN1_R_BUFFER_TOO_SMALL                                 109
-#define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER          166
-#define ASN1_R_DATA_IS_WRONG                            110
-#define ASN1_R_DECODE_ERROR                             155
+#define ASN1_R_AUX_ERROR                                100
+#define ASN1_R_BAD_CLASS                                101
+#define ASN1_R_BAD_OBJECT_HEADER                        102
+#define ASN1_R_BAD_PASSWORD_READ                        103
+#define ASN1_R_BAD_PKCS7_CONTENT                        171
+#define ASN1_R_BAD_TAG                                  104
+#define ASN1_R_BAD_TYPE                                         172
+#define ASN1_R_BN_LIB                                   105
+#define ASN1_R_BOOLEAN_IS_WRONG_LENGTH                  106
+#define ASN1_R_BUFFER_TOO_SMALL                                 107
+#define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER          108
+#define ASN1_R_DATA_IS_WRONG                            109
+#define ASN1_R_DECODE_ERROR                             110
 #define ASN1_R_DECODING_ERROR                           111
-#define ASN1_R_ENCODE_ERROR                             156
-#define ASN1_R_ERROR_PARSING_SET_ELEMENT                112
-#define ASN1_R_ERROR_SETTING_CIPHER_PARAMS              157
-#define ASN1_R_EXPECTING_AN_ENUMERATED                  154
-#define ASN1_R_EXPECTING_AN_INTEGER                     113
-#define ASN1_R_EXPECTING_AN_OBJECT                      114
-#define ASN1_R_EXPECTING_AN_OCTET_STRING                115
-#define ASN1_R_EXPECTING_A_BIT_STRING                   116
+#define ASN1_R_ENCODE_ERROR                             112
+#define ASN1_R_ERROR_PARSING_SET_ELEMENT                113
+#define ASN1_R_ERROR_SETTING_CIPHER_PARAMS              114
+#define ASN1_R_EXPECTING_AN_INTEGER                     115
+#define ASN1_R_EXPECTING_AN_OBJECT                      116
 #define ASN1_R_EXPECTING_A_BOOLEAN                      117
-#define ASN1_R_EXPECTING_A_GENERALIZEDTIME              151
-#define ASN1_R_EXPECTING_A_NULL                                 164
-#define ASN1_R_EXPECTING_A_TIME                                 152
-#define ASN1_R_EXPECTING_A_UTCTIME                      118
-#define ASN1_R_FIRST_NUM_TOO_LARGE                      119
-#define ASN1_R_GENERALIZEDTIME_TOO_LONG                         153
-#define ASN1_R_HEADER_TOO_LONG                          120
-#define ASN1_R_ILLEGAL_CHARACTERS                       158
-#define ASN1_R_INVALID_BMPSTRING_LENGTH                         159
-#define ASN1_R_INVALID_DIGIT                            121
-#define ASN1_R_INVALID_SEPARATOR                        122
-#define ASN1_R_INVALID_TIME_FORMAT                      123
-#define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH           160
-#define ASN1_R_INVALID_UTF8STRING                       161
-#define ASN1_R_IV_TOO_LARGE                             124
-#define ASN1_R_LENGTH_ERROR                             125
-#define ASN1_R_MISSING_SECOND_NUMBER                    126
-#define ASN1_R_NON_HEX_CHARACTERS                       127
-#define ASN1_R_NOT_ENOUGH_DATA                          128
-#define ASN1_R_NULL_IS_WRONG_LENGTH                     165
-#define ASN1_R_ODD_NUMBER_OF_CHARS                      129
-#define ASN1_R_PARSING                                  130
-#define ASN1_R_PRIVATE_KEY_HEADER_MISSING               131
-#define ASN1_R_SECOND_NUMBER_TOO_LARGE                  132
-#define ASN1_R_SHORT_LINE                               133
-#define ASN1_R_STRING_TOO_LONG                          163
-#define ASN1_R_STRING_TOO_SHORT                                 134
-#define ASN1_R_TAG_VALUE_TOO_HIGH                       135
-#define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 136
-#define ASN1_R_TOO_LONG                                         137
-#define ASN1_R_UNABLE_TO_DECODE_RSA_KEY                         138
-#define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY                 139
-#define ASN1_R_UNKNOWN_ATTRIBUTE_TYPE                   140
-#define ASN1_R_UNKNOWN_FORMAT                           162
-#define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM                 141
-#define ASN1_R_UNKNOWN_OBJECT_TYPE                      142
-#define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE                  143
-#define ASN1_R_UNSUPPORTED_CIPHER                       144
-#define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM                 145
-#define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE              146
-#define ASN1_R_UTCTIME_TOO_LONG                                 147
-#define ASN1_R_WRONG_PRINTABLE_TYPE                     148
-#define ASN1_R_WRONG_TAG                                149
-#define ASN1_R_WRONG_TYPE                               150
+#define ASN1_R_EXPECTING_A_NULL                                 173
+#define ASN1_R_EXPECTING_A_TIME                                 118
+#define ASN1_R_EXPLICIT_LENGTH_MISMATCH                         119
+#define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED             120
+#define ASN1_R_FIELD_MISSING                            121
+#define ASN1_R_FIRST_NUM_TOO_LARGE                      122
+#define ASN1_R_HEADER_TOO_LONG                          123
+#define ASN1_R_ILLEGAL_CHARACTERS                       124
+#define ASN1_R_ILLEGAL_NULL                             125
+#define ASN1_R_ILLEGAL_OPTIONAL_ANY                     126
+#define ASN1_R_ILLEGAL_TAGGED_ANY                       127
+#define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG               128
+#define ASN1_R_INVALID_BMPSTRING_LENGTH                         129
+#define ASN1_R_INVALID_DIGIT                            130
+#define ASN1_R_INVALID_SEPARATOR                        131
+#define ASN1_R_INVALID_TIME_FORMAT                      132
+#define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH           133
+#define ASN1_R_INVALID_UTF8STRING                       134
+#define ASN1_R_IV_TOO_LARGE                             135
+#define ASN1_R_LENGTH_ERROR                             136
+#define ASN1_R_MISSING_EOC                              137
+#define ASN1_R_MISSING_SECOND_NUMBER                    138
+#define ASN1_R_MSTRING_NOT_UNIVERSAL                    139
+#define ASN1_R_MSTRING_WRONG_TAG                        140
+#define ASN1_R_NON_HEX_CHARACTERS                       141
+#define ASN1_R_NOT_ENOUGH_DATA                          142
+#define ASN1_R_NO_MATCHING_CHOICE_TYPE                  143
+#define ASN1_R_NULL_IS_WRONG_LENGTH                     144
+#define ASN1_R_ODD_NUMBER_OF_CHARS                      145
+#define ASN1_R_PARSING                                  146
+#define ASN1_R_PRIVATE_KEY_HEADER_MISSING               147
+#define ASN1_R_SECOND_NUMBER_TOO_LARGE                  148
+#define ASN1_R_SEQUENCE_LENGTH_MISMATCH                         149
+#define ASN1_R_SEQUENCE_NOT_CONSTRUCTED                         150
+#define ASN1_R_SHORT_LINE                               151
+#define ASN1_R_STRING_TOO_LONG                          152
+#define ASN1_R_STRING_TOO_SHORT                                 153
+#define ASN1_R_TAG_VALUE_TOO_HIGH                       154
+#define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 155
+#define ASN1_R_TOO_LONG                                         156
+#define ASN1_R_TYPE_NOT_CONSTRUCTED                     157
+#define ASN1_R_UNABLE_TO_DECODE_RSA_KEY                         158
+#define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY                 159
+#define ASN1_R_UNEXPECTED_EOC                           160
+#define ASN1_R_UNKNOWN_FORMAT                           161
+#define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM                 162
+#define ASN1_R_UNKNOWN_OBJECT_TYPE                      163
+#define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE                  164
+#define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE          165
+#define ASN1_R_UNSUPPORTED_CIPHER                       166
+#define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM                 167
+#define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE              168
+#define ASN1_R_WRONG_TAG                                169
+#define ASN1_R_WRONG_TYPE                               170
 
 #ifdef  __cplusplus
 }
index 3a53cb3..e75dfc7 100644 (file)
@@ -70,20 +70,24 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 {ERR_PACK(0,ASN1_F_A2I_ASN1_ENUMERATED,0),     "a2i_ASN1_ENUMERATED"},
 {ERR_PACK(0,ASN1_F_A2I_ASN1_INTEGER,0),        "a2i_ASN1_INTEGER"},
 {ERR_PACK(0,ASN1_F_A2I_ASN1_STRING,0), "a2i_ASN1_STRING"},
-{ERR_PACK(0,ASN1_F_ACCESS_DESCRIPTION_NEW,0),  "ACCESS_DESCRIPTION_new"},
+{ERR_PACK(0,ASN1_F_ASN1_CHECK_TLEN,0), "ASN1_CHECK_TLEN"},
 {ERR_PACK(0,ASN1_F_ASN1_COLLATE_PRIMITIVE,0),  "ASN1_COLLATE_PRIMITIVE"},
+{ERR_PACK(0,ASN1_F_ASN1_COLLECT,0),    "ASN1_COLLECT"},
 {ERR_PACK(0,ASN1_F_ASN1_D2I_BIO,0),    "ASN1_d2i_bio"},
+{ERR_PACK(0,ASN1_F_ASN1_D2I_EX_PRIMITIVE,0),   "ASN1_D2I_EX_PRIMITIVE"},
 {ERR_PACK(0,ASN1_F_ASN1_D2I_FP,0),     "ASN1_d2i_fp"},
+{ERR_PACK(0,ASN1_F_ASN1_DO_ADB,0),     "ASN1_DO_ADB"},
 {ERR_PACK(0,ASN1_F_ASN1_DUP,0),        "ASN1_dup"},
 {ERR_PACK(0,ASN1_F_ASN1_ENUMERATED_SET,0),     "ASN1_ENUMERATED_set"},
 {ERR_PACK(0,ASN1_F_ASN1_ENUMERATED_TO_BN,0),   "ASN1_ENUMERATED_to_BN"},
-{ERR_PACK(0,ASN1_F_ASN1_GENERALIZEDTIME_NEW,0),        "ASN1_GENERALIZEDTIME_new"},
 {ERR_PACK(0,ASN1_F_ASN1_GET_OBJECT,0), "ASN1_get_object"},
 {ERR_PACK(0,ASN1_F_ASN1_HEADER_NEW,0), "ASN1_HEADER_new"},
 {ERR_PACK(0,ASN1_F_ASN1_I2D_BIO,0),    "ASN1_i2d_bio"},
 {ERR_PACK(0,ASN1_F_ASN1_I2D_FP,0),     "ASN1_i2d_fp"},
 {ERR_PACK(0,ASN1_F_ASN1_INTEGER_SET,0),        "ASN1_INTEGER_set"},
 {ERR_PACK(0,ASN1_F_ASN1_INTEGER_TO_BN,0),      "ASN1_INTEGER_to_BN"},
+{ERR_PACK(0,ASN1_F_ASN1_ITEM_EX_D2I,0),        "ASN1_ITEM_EX_D2I"},
+{ERR_PACK(0,ASN1_F_ASN1_ITEM_NEW,0),   "ASN1_item_new"},
 {ERR_PACK(0,ASN1_F_ASN1_MBSTRING_COPY,0),      "ASN1_mbstring_copy"},
 {ERR_PACK(0,ASN1_F_ASN1_OBJECT_NEW,0), "ASN1_OBJECT_new"},
 {ERR_PACK(0,ASN1_F_ASN1_PACK_STRING,0),        "ASN1_pack_string"},
@@ -91,56 +95,38 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 {ERR_PACK(0,ASN1_F_ASN1_SEQ_PACK,0),   "ASN1_seq_pack"},
 {ERR_PACK(0,ASN1_F_ASN1_SEQ_UNPACK,0), "ASN1_seq_unpack"},
 {ERR_PACK(0,ASN1_F_ASN1_SIGN,0),       "ASN1_sign"},
-{ERR_PACK(0,ASN1_F_ASN1_STRING_NEW,0), "ASN1_STRING_new"},
 {ERR_PACK(0,ASN1_F_ASN1_STRING_TABLE_ADD,0),   "ASN1_STRING_TABLE_add"},
 {ERR_PACK(0,ASN1_F_ASN1_STRING_TYPE_NEW,0),    "ASN1_STRING_type_new"},
+{ERR_PACK(0,ASN1_F_ASN1_TEMPLATE_D2I,0),       "ASN1_TEMPLATE_D2I"},
+{ERR_PACK(0,ASN1_F_ASN1_TEMPLATE_EX_D2I,0),    "ASN1_TEMPLATE_EX_D2I"},
+{ERR_PACK(0,ASN1_F_ASN1_TEMPLATE_NEW,0),       "ASN1_TEMPLATE_NEW"},
 {ERR_PACK(0,ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING,0),   "ASN1_TYPE_get_int_octetstring"},
 {ERR_PACK(0,ASN1_F_ASN1_TYPE_GET_OCTETSTRING,0),       "ASN1_TYPE_get_octetstring"},
-{ERR_PACK(0,ASN1_F_ASN1_TYPE_NEW,0),   "ASN1_TYPE_new"},
 {ERR_PACK(0,ASN1_F_ASN1_UNPACK_STRING,0),      "ASN1_unpack_string"},
-{ERR_PACK(0,ASN1_F_ASN1_UTCTIME_NEW,0),        "ASN1_UTCTIME_new"},
 {ERR_PACK(0,ASN1_F_ASN1_VERIFY,0),     "ASN1_verify"},
-{ERR_PACK(0,ASN1_F_AUTHORITY_KEYID_NEW,0),     "AUTHORITY_KEYID_new"},
-{ERR_PACK(0,ASN1_F_BASIC_CONSTRAINTS_NEW,0),   "BASIC_CONSTRAINTS_new"},
 {ERR_PACK(0,ASN1_F_BN_TO_ASN1_ENUMERATED,0),   "BN_to_ASN1_ENUMERATED"},
 {ERR_PACK(0,ASN1_F_BN_TO_ASN1_INTEGER,0),      "BN_to_ASN1_INTEGER"},
-{ERR_PACK(0,ASN1_F_D2I_ACCESS_DESCRIPTION,0),  "d2i_ACCESS_DESCRIPTION"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_BIT_STRING,0),     "d2i_ASN1_BIT_STRING"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_BMPSTRING,0),      "d2i_ASN1_BMPSTRING"},
+{ERR_PACK(0,ASN1_F_COLLECT_DATA,0),    "COLLECT_DATA"},
+{ERR_PACK(0,ASN1_F_D2I_ASN1_BIT_STRING,0),     "D2I_ASN1_BIT_STRING"},
+{ERR_PACK(0,ASN1_F_D2I_ASN1_BMPSTRING,0),      "D2I_ASN1_BMPSTRING"},
 {ERR_PACK(0,ASN1_F_D2I_ASN1_BOOLEAN,0),        "d2i_ASN1_BOOLEAN"},
 {ERR_PACK(0,ASN1_F_D2I_ASN1_BYTES,0),  "d2i_ASN1_bytes"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_ENUMERATED,0),     "d2i_ASN1_ENUMERATED"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_GENERALIZEDTIME,0),        "d2i_ASN1_GENERALIZEDTIME"},
+{ERR_PACK(0,ASN1_F_D2I_ASN1_GENERALIZEDTIME,0),        "D2I_ASN1_GENERALIZEDTIME"},
 {ERR_PACK(0,ASN1_F_D2I_ASN1_HEADER,0), "d2i_ASN1_HEADER"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_INTEGER,0),        "d2i_ASN1_INTEGER"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_NULL,0),   "d2i_ASN1_NULL"},
+{ERR_PACK(0,ASN1_F_D2I_ASN1_INTEGER,0),        "D2I_ASN1_INTEGER"},
+{ERR_PACK(0,ASN1_F_D2I_ASN1_NULL,0),   "D2I_ASN1_NULL"},
 {ERR_PACK(0,ASN1_F_D2I_ASN1_OBJECT,0), "d2i_ASN1_OBJECT"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_OCTET_STRING,0),   "d2i_ASN1_OCTET_STRING"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_PRINT_TYPE,0),     "D2I_ASN1_PRINT_TYPE"},
 {ERR_PACK(0,ASN1_F_D2I_ASN1_SET,0),    "d2i_ASN1_SET"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_TIME,0),   "d2i_ASN1_TIME"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_TYPE,0),   "d2i_ASN1_TYPE"},
 {ERR_PACK(0,ASN1_F_D2I_ASN1_TYPE_BYTES,0),     "d2i_ASN1_type_bytes"},
 {ERR_PACK(0,ASN1_F_D2I_ASN1_UINTEGER,0),       "d2i_ASN1_UINTEGER"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_UTCTIME,0),        "d2i_ASN1_UTCTIME"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_UTF8STRING,0),     "d2i_ASN1_UTF8STRING"},
-{ERR_PACK(0,ASN1_F_D2I_ASN1_VISIBLESTRING,0),  "d2i_ASN1_VISIBLESTRING"},
-{ERR_PACK(0,ASN1_F_D2I_AUTHORITY_KEYID,0),     "d2i_AUTHORITY_KEYID"},
-{ERR_PACK(0,ASN1_F_D2I_BASIC_CONSTRAINTS,0),   "d2i_BASIC_CONSTRAINTS"},
+{ERR_PACK(0,ASN1_F_D2I_ASN1_UTCTIME,0),        "D2I_ASN1_UTCTIME"},
+{ERR_PACK(0,ASN1_F_D2I_ASN1_VISIBLESTRING,0),  "D2I_ASN1_VISIBLESTRING"},
 {ERR_PACK(0,ASN1_F_D2I_DHPARAMS,0),    "d2i_DHparams"},
-{ERR_PACK(0,ASN1_F_D2I_DIST_POINT,0),  "d2i_DIST_POINT"},
-{ERR_PACK(0,ASN1_F_D2I_DIST_POINT_NAME,0),     "d2i_DIST_POINT_NAME"},
 {ERR_PACK(0,ASN1_F_D2I_DSAPARAMS,0),   "d2i_DSAparams"},
 {ERR_PACK(0,ASN1_F_D2I_DSAPRIVATEKEY,0),       "d2i_DSAPrivateKey"},
 {ERR_PACK(0,ASN1_F_D2I_DSAPUBLICKEY,0),        "d2i_DSAPublicKey"},
-{ERR_PACK(0,ASN1_F_D2I_GENERAL_NAME,0),        "d2i_GENERAL_NAME"},
-{ERR_PACK(0,ASN1_F_D2I_NETSCAPE_CERT_SEQUENCE,0),      "d2i_NETSCAPE_CERT_SEQUENCE"},
-{ERR_PACK(0,ASN1_F_D2I_NETSCAPE_PKEY,0),       "D2I_NETSCAPE_PKEY"},
 {ERR_PACK(0,ASN1_F_D2I_NETSCAPE_RSA,0),        "d2i_Netscape_RSA"},
 {ERR_PACK(0,ASN1_F_D2I_NETSCAPE_RSA_2,0),      "d2i_Netscape_RSA_2"},
-{ERR_PACK(0,ASN1_F_D2I_NETSCAPE_SPKAC,0),      "d2i_NETSCAPE_SPKAC"},
-{ERR_PACK(0,ASN1_F_D2I_NETSCAPE_SPKI,0),       "d2i_NETSCAPE_SPKI"},
-{ERR_PACK(0,ASN1_F_D2I_NOTICEREF,0),   "d2i_NOTICEREF"},
 {ERR_PACK(0,ASN1_F_D2I_OCSP_BASICRESP,0),      "d2i_OCSP_BASICRESP"},
 {ERR_PACK(0,ASN1_F_D2I_OCSP_CERTID,0), "d2i_OCSP_CERTID"},
 {ERR_PACK(0,ASN1_F_D2I_OCSP_CERTSTATUS,0),     "d2i_OCSP_CERTSTATUS"},
@@ -156,77 +142,37 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 {ERR_PACK(0,ASN1_F_D2I_OCSP_SERVICELOC,0),     "d2i_OCSP_SERVICELOC"},
 {ERR_PACK(0,ASN1_F_D2I_OCSP_SIGNATURE,0),      "d2i_OCSP_SIGNATURE"},
 {ERR_PACK(0,ASN1_F_D2I_OCSP_SINGLERESP,0),     "d2i_OCSP_SINGLERESP"},
-{ERR_PACK(0,ASN1_F_D2I_OTHERNAME,0),   "d2i_OTHERNAME"},
-{ERR_PACK(0,ASN1_F_D2I_PBE2PARAM,0),   "d2i_PBE2PARAM"},
-{ERR_PACK(0,ASN1_F_D2I_PBEPARAM,0),    "d2i_PBEPARAM"},
-{ERR_PACK(0,ASN1_F_D2I_PBKDF2PARAM,0), "d2i_PBKDF2PARAM"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS12,0),      "d2i_PKCS12"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS12_BAGS,0), "d2i_PKCS12_BAGS"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS12_MAC_DATA,0),     "d2i_PKCS12_MAC_DATA"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS12_SAFEBAG,0),      "d2i_PKCS12_SAFEBAG"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7,0),       "d2i_PKCS7"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_DIGEST,0),        "d2i_PKCS7_DIGEST"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_ENCRYPT,0),       "d2i_PKCS7_ENCRYPT"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_ENC_CONTENT,0),   "d2i_PKCS7_ENC_CONTENT"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_ENVELOPE,0),      "d2i_PKCS7_ENVELOPE"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL,0),     "d2i_PKCS7_ISSUER_AND_SERIAL"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_RECIP_INFO,0),    "d2i_PKCS7_RECIP_INFO"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_SIGNED,0),        "d2i_PKCS7_SIGNED"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_SIGNER_INFO,0),   "d2i_PKCS7_SIGNER_INFO"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS7_SIGN_ENVELOPE,0), "d2i_PKCS7_SIGN_ENVELOPE"},
-{ERR_PACK(0,ASN1_F_D2I_PKCS8_PRIV_KEY_INFO,0), "d2i_PKCS8_PRIV_KEY_INFO"},
-{ERR_PACK(0,ASN1_F_D2I_PKEY_USAGE_PERIOD,0),   "d2i_PKEY_USAGE_PERIOD"},
-{ERR_PACK(0,ASN1_F_D2I_POLICYINFO,0),  "d2i_POLICYINFO"},
-{ERR_PACK(0,ASN1_F_D2I_POLICYQUALINFO,0),      "d2i_POLICYQUALINFO"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS12,0),      "D2I_PKCS12"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS12_BAGS,0), "D2I_PKCS12_BAGS"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS12_MAC_DATA,0),     "D2I_PKCS12_MAC_DATA"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS12_SAFEBAG,0),      "D2I_PKCS12_SAFEBAG"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7,0),       "D2I_PKCS7"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_DIGEST,0),        "D2I_PKCS7_DIGEST"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_ENCRYPT,0),       "D2I_PKCS7_ENCRYPT"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_ENC_CONTENT,0),   "D2I_PKCS7_ENC_CONTENT"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_ENVELOPE,0),      "D2I_PKCS7_ENVELOPE"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL,0),     "D2I_PKCS7_ISSUER_AND_SERIAL"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_RECIP_INFO,0),    "D2I_PKCS7_RECIP_INFO"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_SIGNED,0),        "D2I_PKCS7_SIGNED"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_SIGNER_INFO,0),   "D2I_PKCS7_SIGNER_INFO"},
+{ERR_PACK(0,ASN1_F_D2I_PKCS7_SIGN_ENVELOPE,0), "D2I_PKCS7_SIGN_ENVELOPE"},
 {ERR_PACK(0,ASN1_F_D2I_PRIVATEKEY,0),  "d2i_PrivateKey"},
 {ERR_PACK(0,ASN1_F_D2I_PUBLICKEY,0),   "d2i_PublicKey"},
-{ERR_PACK(0,ASN1_F_D2I_RSAPRIVATEKEY,0),       "d2i_RSAPrivateKey"},
-{ERR_PACK(0,ASN1_F_D2I_RSAPUBLICKEY,0),        "d2i_RSAPublicKey"},
-{ERR_PACK(0,ASN1_F_D2I_SXNET,0),       "d2i_SXNET"},
-{ERR_PACK(0,ASN1_F_D2I_SXNETID,0),     "d2i_SXNETID"},
-{ERR_PACK(0,ASN1_F_D2I_USERNOTICE,0),  "d2i_USERNOTICE"},
-{ERR_PACK(0,ASN1_F_D2I_X509,0),        "d2i_X509"},
-{ERR_PACK(0,ASN1_F_D2I_X509_ALGOR,0),  "d2i_X509_ALGOR"},
-{ERR_PACK(0,ASN1_F_D2I_X509_ATTRIBUTE,0),      "d2i_X509_ATTRIBUTE"},
-{ERR_PACK(0,ASN1_F_D2I_X509_CERT_AUX,0),       "d2i_X509_CERT_AUX"},
-{ERR_PACK(0,ASN1_F_D2I_X509_CINF,0),   "d2i_X509_CINF"},
-{ERR_PACK(0,ASN1_F_D2I_X509_CRL,0),    "d2i_X509_CRL"},
-{ERR_PACK(0,ASN1_F_D2I_X509_CRL_INFO,0),       "d2i_X509_CRL_INFO"},
-{ERR_PACK(0,ASN1_F_D2I_X509_EXTENSION,0),      "d2i_X509_EXTENSION"},
-{ERR_PACK(0,ASN1_F_D2I_X509_KEY,0),    "D2I_X509_KEY"},
-{ERR_PACK(0,ASN1_F_D2I_X509_NAME,0),   "d2i_X509_NAME"},
-{ERR_PACK(0,ASN1_F_D2I_X509_NAME_ENTRY,0),     "d2i_X509_NAME_ENTRY"},
+{ERR_PACK(0,ASN1_F_D2I_X509,0),        "D2I_X509"},
+{ERR_PACK(0,ASN1_F_D2I_X509_CINF,0),   "D2I_X509_CINF"},
+{ERR_PACK(0,ASN1_F_D2I_X509_NAME,0),   "D2I_X509_NAME"},
 {ERR_PACK(0,ASN1_F_D2I_X509_PKEY,0),   "d2i_X509_PKEY"},
-{ERR_PACK(0,ASN1_F_D2I_X509_PUBKEY,0), "d2i_X509_PUBKEY"},
-{ERR_PACK(0,ASN1_F_D2I_X509_REQ,0),    "d2i_X509_REQ"},
-{ERR_PACK(0,ASN1_F_D2I_X509_REQ_INFO,0),       "d2i_X509_REQ_INFO"},
-{ERR_PACK(0,ASN1_F_D2I_X509_REVOKED,0),        "d2i_X509_REVOKED"},
-{ERR_PACK(0,ASN1_F_D2I_X509_SIG,0),    "d2i_X509_SIG"},
-{ERR_PACK(0,ASN1_F_D2I_X509_VAL,0),    "d2i_X509_VAL"},
-{ERR_PACK(0,ASN1_F_DIST_POINT_NAME_NEW,0),     "DIST_POINT_NAME_new"},
-{ERR_PACK(0,ASN1_F_DIST_POINT_NEW,0),  "DIST_POINT_new"},
-{ERR_PACK(0,ASN1_F_GENERAL_NAME_NEW,0),        "GENERAL_NAME_new"},
-{ERR_PACK(0,ASN1_F_I2D_ASN1_HEADER,0), "i2d_ASN1_HEADER"},
-{ERR_PACK(0,ASN1_F_I2D_ASN1_TIME,0),   "i2d_ASN1_TIME"},
+{ERR_PACK(0,ASN1_F_I2D_ASN1_TIME,0),   "I2D_ASN1_TIME"},
 {ERR_PACK(0,ASN1_F_I2D_DHPARAMS,0),    "i2d_DHparams"},
 {ERR_PACK(0,ASN1_F_I2D_DSAPARAMS,0),   "i2d_DSAparams"},
 {ERR_PACK(0,ASN1_F_I2D_DSAPRIVATEKEY,0),       "i2d_DSAPrivateKey"},
 {ERR_PACK(0,ASN1_F_I2D_DSAPUBLICKEY,0),        "i2d_DSAPublicKey"},
 {ERR_PACK(0,ASN1_F_I2D_DSA_PUBKEY,0),  "i2d_DSA_PUBKEY"},
 {ERR_PACK(0,ASN1_F_I2D_NETSCAPE_RSA,0),        "i2d_Netscape_RSA"},
-{ERR_PACK(0,ASN1_F_I2D_PKCS7,0),       "i2d_PKCS7"},
 {ERR_PACK(0,ASN1_F_I2D_PRIVATEKEY,0),  "i2d_PrivateKey"},
 {ERR_PACK(0,ASN1_F_I2D_PUBLICKEY,0),   "i2d_PublicKey"},
-{ERR_PACK(0,ASN1_F_I2D_RSAPRIVATEKEY,0),       "i2d_RSAPrivateKey"},
-{ERR_PACK(0,ASN1_F_I2D_RSAPUBLICKEY,0),        "i2d_RSAPublicKey"},
 {ERR_PACK(0,ASN1_F_I2D_RSA_PUBKEY,0),  "i2d_RSA_PUBKEY"},
-{ERR_PACK(0,ASN1_F_I2D_X509_ATTRIBUTE,0),      "i2d_X509_ATTRIBUTE"},
-{ERR_PACK(0,ASN1_F_I2T_ASN1_OBJECT,0), "i2t_ASN1_OBJECT"},
-{ERR_PACK(0,ASN1_F_NETSCAPE_CERT_SEQUENCE_NEW,0),      "NETSCAPE_CERT_SEQUENCE_new"},
-{ERR_PACK(0,ASN1_F_NETSCAPE_PKEY_NEW,0),       "NETSCAPE_PKEY_NEW"},
-{ERR_PACK(0,ASN1_F_NETSCAPE_SPKAC_NEW,0),      "NETSCAPE_SPKAC_new"},
-{ERR_PACK(0,ASN1_F_NETSCAPE_SPKI_NEW,0),       "NETSCAPE_SPKI_new"},
-{ERR_PACK(0,ASN1_F_NOTICEREF_NEW,0),   "NOTICEREF_new"},
+{ERR_PACK(0,ASN1_F_LONG_C2I,0),        "LONG_C2I"},
 {ERR_PACK(0,ASN1_F_OCSP_BASICRESP_NEW,0),      "OCSP_BASICRESP_new"},
 {ERR_PACK(0,ASN1_F_OCSP_CERTID_NEW,0), "OCSP_CERTID_new"},
 {ERR_PACK(0,ASN1_F_OCSP_CERTSTATUS_NEW,0),     "OCSP_CERTSTATUS_new"},
@@ -242,63 +188,37 @@ static ERR_STRING_DATA ASN1_str_functs[]=
 {ERR_PACK(0,ASN1_F_OCSP_SERVICELOC_NEW,0),     "OCSP_SERVICELOC_new"},
 {ERR_PACK(0,ASN1_F_OCSP_SIGNATURE_NEW,0),      "OCSP_SIGNATURE_new"},
 {ERR_PACK(0,ASN1_F_OCSP_SINGLERESP_NEW,0),     "OCSP_SINGLERESP_new"},
-{ERR_PACK(0,ASN1_F_OTHERNAME_NEW,0),   "OTHERNAME_new"},
-{ERR_PACK(0,ASN1_F_PBE2PARAM_NEW,0),   "PBE2PARAM_new"},
-{ERR_PACK(0,ASN1_F_PBEPARAM_NEW,0),    "PBEPARAM_new"},
-{ERR_PACK(0,ASN1_F_PBKDF2PARAM_NEW,0), "PBKDF2PARAM_new"},
-{ERR_PACK(0,ASN1_F_PKCS12_BAGS_NEW,0), "PKCS12_BAGS_new"},
-{ERR_PACK(0,ASN1_F_PKCS12_MAC_DATA_NEW,0),     "PKCS12_MAC_DATA_new"},
-{ERR_PACK(0,ASN1_F_PKCS12_NEW,0),      "PKCS12_new"},
-{ERR_PACK(0,ASN1_F_PKCS12_SAFEBAG_NEW,0),      "PKCS12_SAFEBAG_new"},
+{ERR_PACK(0,ASN1_F_PKCS12_BAGS_NEW,0), "PKCS12_BAGS_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS12_MAC_DATA_NEW,0),     "PKCS12_MAC_DATA_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS12_NEW,0),      "PKCS12_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS12_SAFEBAG_NEW,0),      "PKCS12_SAFEBAG_NEW"},
 {ERR_PACK(0,ASN1_F_PKCS5_PBE2_SET,0),  "PKCS5_pbe2_set"},
-{ERR_PACK(0,ASN1_F_PKCS7_DIGEST_NEW,0),        "PKCS7_DIGEST_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_ENCRYPT_NEW,0),       "PKCS7_ENCRYPT_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_ENC_CONTENT_NEW,0),   "PKCS7_ENC_CONTENT_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_ENVELOPE_NEW,0),      "PKCS7_ENVELOPE_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW,0),     "PKCS7_ISSUER_AND_SERIAL_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_NEW,0),       "PKCS7_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_RECIP_INFO_NEW,0),    "PKCS7_RECIP_INFO_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_SIGNED_NEW,0),        "PKCS7_SIGNED_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_SIGNER_INFO_NEW,0),   "PKCS7_SIGNER_INFO_new"},
-{ERR_PACK(0,ASN1_F_PKCS7_SIGN_ENVELOPE_NEW,0), "PKCS7_SIGN_ENVELOPE_new"},
-{ERR_PACK(0,ASN1_F_PKCS8_PRIV_KEY_INFO_NEW,0), "PKCS8_PRIV_KEY_INFO_new"},
-{ERR_PACK(0,ASN1_F_PKEY_USAGE_PERIOD_NEW,0),   "PKEY_USAGE_PERIOD_new"},
-{ERR_PACK(0,ASN1_F_POLICYINFO_NEW,0),  "POLICYINFO_new"},
-{ERR_PACK(0,ASN1_F_POLICYQUALINFO_NEW,0),      "POLICYQUALINFO_new"},
-{ERR_PACK(0,ASN1_F_SXNETID_NEW,0),     "SXNETID_new"},
-{ERR_PACK(0,ASN1_F_SXNET_NEW,0),       "SXNET_new"},
-{ERR_PACK(0,ASN1_F_USERNOTICE_NEW,0),  "USERNOTICE_new"},
-{ERR_PACK(0,ASN1_F_X509_ALGOR_NEW,0),  "X509_ALGOR_new"},
-{ERR_PACK(0,ASN1_F_X509_ATTRIBUTE_NEW,0),      "X509_ATTRIBUTE_new"},
-{ERR_PACK(0,ASN1_F_X509_CERT_AUX_NEW,0),       "X509_CERT_AUX_new"},
-{ERR_PACK(0,ASN1_F_X509_CINF_NEW,0),   "X509_CINF_new"},
-{ERR_PACK(0,ASN1_F_X509_CRL_INFO_NEW,0),       "X509_CRL_INFO_new"},
-{ERR_PACK(0,ASN1_F_X509_CRL_NEW,0),    "X509_CRL_new"},
-{ERR_PACK(0,ASN1_F_X509_DHPARAMS_NEW,0),       "X509_DHPARAMS_NEW"},
-{ERR_PACK(0,ASN1_F_X509_EXTENSION_NEW,0),      "X509_EXTENSION_new"},
+{ERR_PACK(0,ASN1_F_PKCS7_DIGEST_NEW,0),        "PKCS7_DIGEST_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_ENCRYPT_NEW,0),       "PKCS7_ENCRYPT_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_ENC_CONTENT_NEW,0),   "PKCS7_ENC_CONTENT_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_ENVELOPE_NEW,0),      "PKCS7_ENVELOPE_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW,0),     "PKCS7_ISSUER_AND_SERIAL_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_NEW,0),       "PKCS7_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_RECIP_INFO_NEW,0),    "PKCS7_RECIP_INFO_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_SIGNED_NEW,0),        "PKCS7_SIGNED_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_SIGNER_INFO_NEW,0),   "PKCS7_SIGNER_INFO_NEW"},
+{ERR_PACK(0,ASN1_F_PKCS7_SIGN_ENVELOPE_NEW,0), "PKCS7_SIGN_ENVELOPE_NEW"},
+{ERR_PACK(0,ASN1_F_X509_CINF_NEW,0),   "X509_CINF_NEW"},
+{ERR_PACK(0,ASN1_F_X509_CRL_ADD0_REVOKED,0),   "X509_CRL_add0_revoked"},
 {ERR_PACK(0,ASN1_F_X509_INFO_NEW,0),   "X509_INFO_new"},
-{ERR_PACK(0,ASN1_F_X509_KEY_NEW,0),    "X509_KEY_NEW"},
-{ERR_PACK(0,ASN1_F_X509_NAME_ENTRY_NEW,0),     "X509_NAME_ENTRY_new"},
-{ERR_PACK(0,ASN1_F_X509_NAME_NEW,0),   "X509_NAME_new"},
-{ERR_PACK(0,ASN1_F_X509_NEW,0),        "X509_new"},
+{ERR_PACK(0,ASN1_F_X509_NAME_NEW,0),   "X509_NAME_NEW"},
+{ERR_PACK(0,ASN1_F_X509_NEW,0),        "X509_NEW"},
 {ERR_PACK(0,ASN1_F_X509_PKEY_NEW,0),   "X509_PKEY_new"},
-{ERR_PACK(0,ASN1_F_X509_PUBKEY_NEW,0), "X509_PUBKEY_new"},
-{ERR_PACK(0,ASN1_F_X509_REQ_INFO_NEW,0),       "X509_REQ_INFO_new"},
-{ERR_PACK(0,ASN1_F_X509_REQ_NEW,0),    "X509_REQ_new"},
-{ERR_PACK(0,ASN1_F_X509_REVOKED_NEW,0),        "X509_REVOKED_new"},
-{ERR_PACK(0,ASN1_F_X509_SIG_NEW,0),    "X509_SIG_new"},
-{ERR_PACK(0,ASN1_F_X509_VAL_FREE,0),   "X509_VAL_free"},
-{ERR_PACK(0,ASN1_F_X509_VAL_NEW,0),    "X509_VAL_new"},
 {0,NULL}
        };
 
 static ERR_STRING_DATA ASN1_str_reasons[]=
        {
+{ASN1_R_AUX_ERROR                        ,"aux error"},
 {ASN1_R_BAD_CLASS                        ,"bad class"},
 {ASN1_R_BAD_OBJECT_HEADER                ,"bad object header"},
 {ASN1_R_BAD_PASSWORD_READ                ,"bad password read"},
 {ASN1_R_BAD_PKCS7_CONTENT                ,"bad pkcs7 content"},
-{ASN1_R_BAD_PKCS7_TYPE                   ,"bad pkcs7 type"},
 {ASN1_R_BAD_TAG                          ,"bad tag"},
 {ASN1_R_BAD_TYPE                         ,"bad type"},
 {ASN1_R_BN_LIB                           ,"bn lib"},
@@ -311,20 +231,21 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
 {ASN1_R_ENCODE_ERROR                     ,"encode error"},
 {ASN1_R_ERROR_PARSING_SET_ELEMENT        ,"error parsing set element"},
 {ASN1_R_ERROR_SETTING_CIPHER_PARAMS      ,"error setting cipher params"},
-{ASN1_R_EXPECTING_AN_ENUMERATED          ,"expecting an enumerated"},
 {ASN1_R_EXPECTING_AN_INTEGER             ,"expecting an integer"},
 {ASN1_R_EXPECTING_AN_OBJECT              ,"expecting an object"},
-{ASN1_R_EXPECTING_AN_OCTET_STRING        ,"expecting an octet string"},
-{ASN1_R_EXPECTING_A_BIT_STRING           ,"expecting a bit string"},
 {ASN1_R_EXPECTING_A_BOOLEAN              ,"expecting a boolean"},
-{ASN1_R_EXPECTING_A_GENERALIZEDTIME      ,"expecting a generalizedtime"},
 {ASN1_R_EXPECTING_A_NULL                 ,"expecting a null"},
 {ASN1_R_EXPECTING_A_TIME                 ,"expecting a time"},
-{ASN1_R_EXPECTING_A_UTCTIME              ,"expecting a utctime"},
+{ASN1_R_EXPLICIT_LENGTH_MISMATCH         ,"explicit length mismatch"},
+{ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED     ,"explicit tag not constructed"},
+{ASN1_R_FIELD_MISSING                    ,"field missing"},
 {ASN1_R_FIRST_NUM_TOO_LARGE              ,"first num too large"},
-{ASN1_R_GENERALIZEDTIME_TOO_LONG         ,"generalizedtime too long"},
 {ASN1_R_HEADER_TOO_LONG                  ,"header too long"},
 {ASN1_R_ILLEGAL_CHARACTERS               ,"illegal characters"},
+{ASN1_R_ILLEGAL_NULL                     ,"illegal null"},
+{ASN1_R_ILLEGAL_OPTIONAL_ANY             ,"illegal optional any"},
+{ASN1_R_ILLEGAL_TAGGED_ANY               ,"illegal tagged any"},
+{ASN1_R_INTEGER_TOO_LARGE_FOR_LONG       ,"integer too large for long"},
 {ASN1_R_INVALID_BMPSTRING_LENGTH         ,"invalid bmpstring length"},
 {ASN1_R_INVALID_DIGIT                    ,"invalid digit"},
 {ASN1_R_INVALID_SEPARATOR                ,"invalid separator"},
@@ -333,32 +254,38 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
 {ASN1_R_INVALID_UTF8STRING               ,"invalid utf8string"},
 {ASN1_R_IV_TOO_LARGE                     ,"iv too large"},
 {ASN1_R_LENGTH_ERROR                     ,"length error"},
+{ASN1_R_MISSING_EOC                      ,"missing eoc"},
 {ASN1_R_MISSING_SECOND_NUMBER            ,"missing second number"},
+{ASN1_R_MSTRING_NOT_UNIVERSAL            ,"mstring not universal"},
+{ASN1_R_MSTRING_WRONG_TAG                ,"mstring wrong tag"},
 {ASN1_R_NON_HEX_CHARACTERS               ,"non hex characters"},
 {ASN1_R_NOT_ENOUGH_DATA                  ,"not enough data"},
+{ASN1_R_NO_MATCHING_CHOICE_TYPE          ,"no matching choice type"},
 {ASN1_R_NULL_IS_WRONG_LENGTH             ,"null is wrong length"},
 {ASN1_R_ODD_NUMBER_OF_CHARS              ,"odd number of chars"},
 {ASN1_R_PARSING                          ,"parsing"},
 {ASN1_R_PRIVATE_KEY_HEADER_MISSING       ,"private key header missing"},
 {ASN1_R_SECOND_NUMBER_TOO_LARGE          ,"second number too large"},
+{ASN1_R_SEQUENCE_LENGTH_MISMATCH         ,"sequence length mismatch"},
+{ASN1_R_SEQUENCE_NOT_CONSTRUCTED         ,"sequence not constructed"},
 {ASN1_R_SHORT_LINE                       ,"short line"},
 {ASN1_R_STRING_TOO_LONG                  ,"string too long"},
 {ASN1_R_STRING_TOO_SHORT                 ,"string too short"},
 {ASN1_R_TAG_VALUE_TOO_HIGH               ,"tag value too high"},
 {ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD,"the asn1 object identifier is not known for this md"},
 {ASN1_R_TOO_LONG                         ,"too long"},
+{ASN1_R_TYPE_NOT_CONSTRUCTED             ,"type not constructed"},
 {ASN1_R_UNABLE_TO_DECODE_RSA_KEY         ,"unable to decode rsa key"},
 {ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY ,"unable to decode rsa private key"},
-{ASN1_R_UNKNOWN_ATTRIBUTE_TYPE           ,"unknown attribute type"},
+{ASN1_R_UNEXPECTED_EOC                   ,"unexpected eoc"},
 {ASN1_R_UNKNOWN_FORMAT                   ,"unknown format"},
 {ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM ,"unknown message digest algorithm"},
 {ASN1_R_UNKNOWN_OBJECT_TYPE              ,"unknown object type"},
 {ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE          ,"unknown public key type"},
+{ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE  ,"unsupported any defined by type"},
 {ASN1_R_UNSUPPORTED_CIPHER               ,"unsupported cipher"},
 {ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM ,"unsupported encryption algorithm"},
 {ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE      ,"unsupported public key type"},
-{ASN1_R_UTCTIME_TOO_LONG                 ,"utctime too long"},
-{ASN1_R_WRONG_PRINTABLE_TYPE             ,"wrong printable type"},
 {ASN1_R_WRONG_TAG                        ,"wrong tag"},
 {ASN1_R_WRONG_TYPE                       ,"wrong type"},
 {0,NULL}
index 77447a5..830ff2a 100644 (file)
@@ -59,7 +59,6 @@
 #include <stdio.h>
 #include "cryptlib.h"
 #include <openssl/asn1.h>
-#include <openssl/asn1_mac.h>
 
 static int asn1_get_length(unsigned char **pp,int *inf,long *rl,int max);
 static void asn1_put_length(unsigned char **pp, int length);
diff --git a/crypto/asn1/asn1t.h b/crypto/asn1/asn1t.h
new file mode 100644 (file)
index 0000000..430c371
--- /dev/null
@@ -0,0 +1,755 @@
+/* asn1t.h */
+/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
+ * project 2000.
+ */
+/* ====================================================================
+ * Copyright (c) 2000 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    licensing@OpenSSL.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+#ifndef HEADER_ASN1T_H
+#define HEADER_ASN1T_H
+
+#include <stddef.h>
+#include <openssl/asn1.h>
+
+/* ASN1 template defines, structures and functions */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/* Macros to aid ASN1 template writing */
+
+#define ASN1_ITEM_TEMPLATE(tname) \
+       const static ASN1_TEMPLATE tname##_item_tt 
+
+#define ASN1_ITEM_TEMPLATE_END(tname) \
+       ;\
+       const ASN1_ITEM tname##_it = { \
+               ASN1_ITYPE_PRIMITIVE,\
+               -1,\
+               &tname##_item_tt,\
+               0,\
+               NULL,\
+               0,\
+               #tname \
+       }
+
+
+/* This is a ASN1 type which just embeds a template */
+/* This pair helps declare a SEQUENCE. We can do:
+ *
+ *     ASN1_SEQUENCE(stname) = {
+ *             ... SEQUENCE components ...
+ *     } ASN1_SEQUENCE_END(stname);
+ *
+ *     This will produce an ASN1_ITEM called stname_it
+ *     for a structure called stname.
+ *
+ *     If you want the same structure but a different
+ *     name then use:
+ *
+ *     ASN1_SEQUENCE(itname) = {
+ *             ... SEQUENCE components ...
+ *     } ASN1_SEQUENCE_END_name(stname, itname);
+ *
+ *     This will create an item called itname_it using
+ *     a structure called stname.
+ */
+
+#define ASN1_SEQUENCE(tname) \
+       const static ASN1_TEMPLATE tname##_seq_tt[] 
+
+#define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)
+
+#define ASN1_SEQUENCE_END_name(stname, tname) \
+       ;\
+       const ASN1_ITEM tname##_it = { \
+               ASN1_ITYPE_SEQUENCE,\
+               V_ASN1_SEQUENCE,\
+               tname##_seq_tt,\
+               sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
+               NULL,\
+               sizeof(stname),\
+               #stname \
+       }
+
+#define ASN1_SEQUENCE_cb(tname, cb) \
+       const static ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \
+       ASN1_SEQUENCE(tname)
+
+#define ASN1_BROKEN_SEQUENCE(tname) \
+       const static ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0, 0}; \
+       ASN1_SEQUENCE(tname)
+
+#define ASN1_SEQUENCE_ref(tname, cb, lck) \
+       const static ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), lck, cb, 0}; \
+       ASN1_SEQUENCE(tname)
+
+#define ASN1_SEQUENCE_enc(tname, enc, cb) \
+       const static ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc)}; \
+       ASN1_SEQUENCE(tname)
+
+#define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname)
+
+#define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
+
+#define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
+
+#define ASN1_SEQUENCE_END_ref(stname, tname) \
+       ;\
+       const ASN1_ITEM tname##_it = { \
+               ASN1_ITYPE_SEQUENCE,\
+               V_ASN1_SEQUENCE,\
+               tname##_seq_tt,\
+               sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
+               &tname##_aux,\
+               sizeof(stname),\
+               #stname \
+       }
+
+
+/* This pair helps declare a CHOICE type. We can do:
+ *
+ *     ASN1_CHOICE(chname) = {
+ *             ... CHOICE options ...
+ *     ASN1_CHOICE_END(chname);
+ *
+ *     This will produce an ASN1_ITEM called chname_it
+ *     for a structure called chname. The structure
+ *     definition must look like this:
+ *     typedef struct {
+ *             int type;
+ *             union {
+ *                     ASN1_SOMETHING *opt1;
+ *                     ASN1_SOMEOTHER *opt2;
+ *             } value;
+ *     } chname;
+ *     
+ *     the name of the selector must be 'type'.
+ *     to use an alternative selector name use the
+ *      ASN1_CHOICE_END_selector() version.
+ */
+
+#define ASN1_CHOICE(tname) \
+       const static ASN1_TEMPLATE tname##_ch_tt[] 
+
+#define ASN1_CHOICE_cb(tname, cb) \
+       const static ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \
+       ASN1_CHOICE(tname)
+
+#define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
+
+#define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)
+
+#define ASN1_CHOICE_END_selector(stname, tname, selname) \
+       ;\
+       const ASN1_ITEM tname##_it = { \
+               ASN1_ITYPE_CHOICE,\
+               offsetof(stname,selname) ,\
+               tname##_ch_tt,\
+               sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
+               NULL,\
+               sizeof(stname),\
+               #stname \
+       }
+
+#define ASN1_CHOICE_END_cb(stname, tname, selname) \
+       ;\
+       const ASN1_ITEM tname##_it = { \
+               ASN1_ITYPE_CHOICE,\
+               offsetof(stname,selname) ,\
+               tname##_ch_tt,\
+               sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
+               &tname##_aux,\
+               sizeof(stname),\
+               #stname \
+       }
+
+/* This helps with the template wrapper form of ASN1_ITEM */
+
+#define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \
+       (flags), (tag), 0,\
+       #name, &(type##_it) }
+
+/* These help with SEQUENCE or CHOICE components */
+
+/* used to declare other types */
+
+#define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
+       (flags), (tag), offsetof(stname, field),\
+       #field, &(type##_it) }
+
+/* used when the structure is combined with the parent */
+
+#define ASN1_EX_COMBINE(flags, tag, type) { \
+       (flags)|ASN1_TFLG_COMBINE, (tag), 0, NULL, &(type##_it) }
+
+/* implicit and explicit helper macros */
+
+#define ASN1_IMP_EX(stname, field, type, tag, ex) \
+               ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | ex, tag, stname, field, type)
+
+#define ASN1_EXP_EX(stname, field, type, tag, ex) \
+               ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | ex, tag, stname, field, type)
+
+/* Any defined by macros: the field used is in the table itself */
+
+#define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, &(tblname##_adb) }
+#define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, &(tblname##_adb) }
+
+/* Plain simple type */
+#define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type)
+
+/* OPTIONAL simple type */
+#define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type)
+
+/* IMPLICIT tagged simple type */
+#define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0)
+
+/* IMPLICIT tagged OPTIONAL simple type */
+#define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
+
+/* Same as above but EXPLICIT */
+
+#define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0)
+#define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
+
+/* SEQUENCE OF type */
+#define ASN1_SEQUENCE_OF(stname, field, type) \
+               ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type)
+
+/* OPTIONAL SEQUENCE OF */
+#define ASN1_SEQUENCE_OF_OPT(stname, field, type) \
+               ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
+
+/* Same as above but for SET OF */
+
+#define ASN1_SET_OF(stname, field, type) \
+               ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type)
+
+#define ASN1_SET_OF_OPT(stname, field, type) \
+               ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
+
+/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */
+
+#define ASN1_IMP_SET_OF(stname, field, type, tag) \
+                       ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
+
+#define ASN1_EXP_SET_OF(stname, field, type, tag) \
+                       ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
+
+#define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \
+                       ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
+
+#define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \
+                       ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
+
+#define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \
+                       ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
+
+#define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \
+                       ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
+
+#define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \
+                       ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
+
+#define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
+                       ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
+
+/* Macros for the ASN1_ADB structure */
+
+#define ASN1_ADB(name) \
+       const static ASN1_ADB_TABLE name##_adbtbl[] 
+
+#define ASN1_ADB_END(name, flags, field, app_table, def, none) \
+       ;\
+       const static ASN1_ADB name##_adb = {\
+               flags,\
+               offsetof(name, field),\
+               app_table,\
+               name##_adbtbl,\
+               sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\
+               def,\
+               none\
+       }
+
+#define ADB_ENTRY(val, template) {val, template}
+
+#define ASN1_ADB_TEMPLATE(name) \
+       const static ASN1_TEMPLATE name##_tt 
+
+/* This is the ASN1 template structure that defines
+ * a wrapper round the actual type. It determines the
+ * actual position of the field in the value structure,
+ * various flags such as OPTIONAL and the field name.
+ */
+
+struct ASN1_TEMPLATE_st {
+unsigned long flags;           /* Various flags */
+long tag;                      /* tag, not used if no tagging */
+unsigned long offset;          /* Offset of this field in structure */
+#ifndef NO_ASN1_FIELD_NAMES
+char *field_name;              /* Field name */
+#endif
+const void *item;              /* Relevant ASN1_ITEM or ASN1_ADB */
+};
+
+
+typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
+typedef struct ASN1_ADB_st ASN1_ADB;
+
+struct ASN1_ADB_st {
+       unsigned long flags;    /* Various flags */
+       unsigned long offset;   /* Offset of selector field */
+       STACK_OF(ASN1_ADB_TABLE) **app_items; /* Application defined items */
+       const ASN1_ADB_TABLE *tbl;      /* Table of possible types */
+       long tblcount;          /* Number of entries in tbl */
+       const ASN1_TEMPLATE *default_tt;  /* Type to use if no match */
+       const ASN1_TEMPLATE *null_tt;  /* Type to use if selector is NULL */
+};
+
+struct ASN1_ADB_TABLE_st {
+       long value;             /* NID for an object or value for an int */
+       const ASN1_TEMPLATE tt;         /* item for this value */
+};
+
+/* template flags */
+
+/* Field is optional */
+#define ASN1_TFLG_OPTIONAL     (0x1)
+
+/* Field is a SET OF */
+#define ASN1_TFLG_SET_OF       (0x1 << 1)
+
+/* Field is a SEQUENCE OF */
+#define ASN1_TFLG_SEQUENCE_OF  (0x2 << 1)
+
+#define ASN1_TFLG_SK_MASK      (0x3 << 1)
+
+/* These flags mean the tag should be taken from the
+ * tag field. If EXPLICIT then the underlying type
+ * is used for the inner tag.
+ */
+
+/* IMPLICIT tagging */
+#define ASN1_TFLG_IMPTAG       (0x1 << 3)
+
+
+/* EXPLICIT tagging, inner tag from underlying type */
+#define ASN1_TFLG_EXPTAG       (0x2 << 3)
+
+#define ASN1_TFLG_TAG_MASK     (0x3 << 3)
+
+/* context specific IMPLICIT */
+#define ASN1_TFLG_IMPLICIT     ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT
+
+/* context specific EXPLICIT */
+#define ASN1_TFLG_EXPLICIT     ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT
+
+/* If tagging is in force these determine the
+ * type of tag to use. Otherwise the tag is
+ * determined by the underlying type. These 
+ * values reflect the actual octet format.
+ */
+
+/* Universal tag */ 
+#define ASN1_TFLG_UNIVERSAL    (0x0<<6)
+/* Application tag */ 
+#define ASN1_TFLG_APPLICATION  (0x1<<6)
+/* Context specific tag */ 
+#define ASN1_TFLG_CONTEXT      (0x2<<6)
+/* Private tag */ 
+#define ASN1_TFLG_PRIVATE      (0x3<<6)
+
+#define ASN1_TFLG_TAG_CLASS    (0x3<<6)
+
+/* These are for ANY DEFINED BY type. In this case
+ * the 'item' field points to an ASN1_ADB structure
+ * which contains a table of values to decode the
+ * relevant type
+ */
+
+#define ASN1_TFLG_ADB_MASK     (0x3<<8)
+
+#define ASN1_TFLG_ADB_OID      (0x1<<8)
+
+#define ASN1_TFLG_ADB_INT      (0x1<<9)
+
+/* This flag means a parent structure is passed
+ * instead of the field: this is useful is a
+ * SEQUENCE is being combined with a CHOICE for
+ * example. Since this means the structure and
+ * item name will differ we need to use the
+ * ASN1_CHOICE_END_name() macro for example.
+ */
+
+#define ASN1_TFLG_COMBINE      (0x1<<10)
+
+/* This is the actual ASN1 item itself */
+
+struct ASN1_ITEM_st {
+char itype;                    /* The item type, primitive, SEQUENCE, CHOICE or extern */
+long utype;                    /* underlying type */
+const ASN1_TEMPLATE *templates;        /* If SEQUENCE or CHOICE this contains the contents */
+long tcount;                   /* Number of templates if SEQUENCE or CHOICE */
+const void *funcs;             /* functions that handle this type */
+long size;                     /* Structure size (usually)*/
+#ifndef NO_ASN1_FIELD_NAMES
+const char *sname;             /* Structure name */
+#endif
+};
+
+/* These are values for the itype field and
+ * determine how the type is interpreted.
+ *
+ * For PRIMITIVE types the underlying type
+ * determines the behaviour if items is NULL.
+ *
+ * Otherwise templates must contain a single 
+ * template and the type is treated in the
+ * same way as the type specified in the template.
+ *
+ * For SEQUENCE types the templates field points
+ * to the members, the size field is the
+ * structure size.
+ *
+ * For CHOICE types the templates field points
+ * to each possible member (typically a union)
+ * and the 'size' field is the offset of the
+ * selector.
+ *
+ * The 'funcs' field is used for application
+ * specific functions. 
+ *
+ * For COMPAT types the funcs field gives a
+ * set of functions that handle this type, this
+ * supports the old d2i, i2d convention.
+ *
+ * The EXTERN type uses a new style d2i/i2d.
+ * The new style should be used where possible
+ * because it avoids things like the d2i IMPLICIT
+ * hack.
+ *
+ * MSTRING is a multiple string type, it is used
+ * for a CHOICE of character strings where the
+ * actual strings all occupy an ASN1_STRING
+ * structure. In this case the 'utype' field
+ * has a special meaning, it is used as a mask
+ * of acceptable types using the B_ASN1 constants.
+ *
+ */
+
+#define ASN1_ITYPE_PRIMITIVE   0x0
+
+#define ASN1_ITYPE_SEQUENCE    0x1
+
+#define ASN1_ITYPE_CHOICE      0x2
+
+#define ASN1_ITYPE_COMPAT      0x3
+
+#define ASN1_ITYPE_EXTERN      0x4
+
+#define ASN1_ITYPE_MSTRING     0x5
+
+/* Cache for ASN1 tag and length, so we
+ * don't keep re-reading it for things
+ * like CHOICE
+ */
+
+struct ASN1_TLC_st{
+       char valid;     /* Values below are valid */
+       int ret;        /* return value */
+       long plen;      /* length */
+       int ptag;       /* class value */
+       int pclass;     /* class value */
+       int hdrlen;     /* header length */
+};
+
+/* Typedefs for ASN1 function pointers */
+
+typedef ASN1_VALUE * ASN1_new_func(void);
+typedef void ASN1_free_func(ASN1_VALUE *a);
+typedef ASN1_VALUE * ASN1_d2i_func(ASN1_VALUE **a, unsigned char ** in, long length);
+typedef int ASN1_i2d_func(ASN1_VALUE * a, unsigned char **in);
+
+typedef int ASN1_ex_d2i(ASN1_VALUE **pval, unsigned char **in, long len, const ASN1_ITEM *it,
+                                       int tag, int aclass, char opt, ASN1_TLC *ctx);
+
+typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass);
+typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
+typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
+
+typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
+typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
+
+typedef struct ASN1_COMPAT_FUNCS_st {
+       ASN1_new_func *asn1_new;
+       ASN1_free_func *asn1_free;
+       ASN1_d2i_func *asn1_d2i;
+       ASN1_i2d_func *asn1_i2d;
+} ASN1_COMPAT_FUNCS;
+
+typedef struct ASN1_EXTERN_FUNCS_st {
+       void *app_data;
+       ASN1_ex_new_func *asn1_ex_new;
+       ASN1_ex_free_func *asn1_ex_free;
+       ASN1_ex_free_func *asn1_ex_clear;
+       ASN1_ex_d2i *asn1_ex_d2i;
+       ASN1_ex_i2d *asn1_ex_i2d;
+} ASN1_EXTERN_FUNCS;
+
+typedef struct ASN1_PRIMITIVE_FUNCS_st {
+       void *app_data;
+       unsigned long flags;
+       ASN1_ex_new_func *prim_new;
+       ASN1_ex_free_func *prim_free;
+       ASN1_ex_free_func *prim_clear;
+       ASN1_primitive_c2i *prim_c2i;
+       ASN1_primitive_i2c *prim_i2c;
+} ASN1_PRIMITIVE_FUNCS;
+
+/* This is the ASN1_AUX structure: it handles various
+ * miscellaneous requirements. For example the use of
+ * reference counts and an informational callback.
+ *
+ * The "informational callback" is called at various
+ * points during the ASN1 encoding and decoding. It can
+ * be used to provide minor customisation of the structures
+ * used. This is most useful where the supplied routines
+ * *almost* do the right thing but need some extra help
+ * at a few points. If the callback returns zero then
+ * it is assumed a fatal error has occurred and the 
+ * main operation should be abandoned.
+ *
+ * If major changes in the default behaviour are required
+ * then an external type is more appropriate.
+ */
+
+typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it);
+
+typedef struct ASN1_AUX_st {
+       void *app_data;
+       int flags;
+       int ref_offset;         /* Offset of reference value */
+       int ref_lock;           /* Lock type to use */
+       ASN1_aux_cb *asn1_cb;
+       int enc_offset;         /* Offset of ASN1_ENCODING structure */
+} ASN1_AUX;
+
+/* Flags in ASN1_AUX */
+
+/* Use a reference count */
+#define ASN1_AFLG_REFCOUNT     1
+/* Save the encoding of structure (useful for signatures) */
+#define ASN1_AFLG_ENCODING     2
+/* The Sequence length is invalid */
+#define ASN1_AFLG_BROKEN       4
+
+/* operation values for asn1_cb */
+
+#define ASN1_OP_NEW_PRE                0
+#define ASN1_OP_NEW_POST       1
+#define ASN1_OP_FREE_PRE       2
+#define ASN1_OP_FREE_POST      3
+#define ASN1_OP_D2I_PRE                4
+#define ASN1_OP_D2I_POST       5
+#define ASN1_OP_I2D_PRE                6
+#define ASN1_OP_I2D_POST       7
+
+/* Macro to implement a primitive type */
+#define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
+#define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) const ASN1_ITEM itname##_it = \
+                               { ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname};
+
+/* Macro to implement a multi string type */
+#define IMPLEMENT_ASN1_MSTRING(itname, mask) const ASN1_ITEM itname##_it = \
+                               { ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname};
+
+/* Macro to implement an ASN1_ITEM in terms of old style funcs */
+
+#define IMPLEMENT_COMPAT_ASN1(sname) IMPLEMENT_COMPAT_ASN1_type(sname, V_ASN1_SEQUENCE)
+
+#define IMPLEMENT_COMPAT_ASN1_type(sname, tag) \
+       static const ASN1_COMPAT_FUNCS sname##_ff = { \
+               (ASN1_new_func *)sname##_new, \
+               (ASN1_free_func *)sname##_free, \
+               (ASN1_d2i_func *)d2i_##sname, \
+               (ASN1_i2d_func *)i2d_##sname, \
+       }; \
+       ASN1_ITEM const sname##_it = { \
+               ASN1_ITYPE_COMPAT, \
+               tag, \
+               NULL, \
+               0, \
+               &sname##_ff, \
+               0, \
+               #sname \
+       }
+
+#define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
+       const ASN1_ITEM sname##_it = { \
+               ASN1_ITYPE_EXTERN, \
+               tag, \
+               NULL, \
+               0, \
+               &fptrs, \
+               0, \
+               #sname \
+       };
+
+/* Macro to implement standard functions in terms of ASN1_ITEM structures */
+
+#define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)
+
+#define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname)
+
+#define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
+                       IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
+
+#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
+       stname *fname##_new(void) \
+       { \
+               return (stname *)ASN1_item_new(&itname##_it); \
+       } \
+       void fname##_free(stname *a) \
+       { \
+               ASN1_item_free((ASN1_VALUE *)a, &itname##_it); \
+       }
+
+#define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \
+       IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
+       IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
+
+#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
+       stname *d2i_##fname(stname **a, unsigned char **in, long len) \
+       { \
+               return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, &itname##_it);\
+       } \
+       int i2d_##fname(stname *a, unsigned char **out) \
+       { \
+               return ASN1_item_i2d((ASN1_VALUE *)a, out, &itname##_it);\
+       } 
+
+/* This includes evil casts to remove const: they will go away when full
+ * ASN1 constification is done.
+ */
+#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
+       stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
+       { \
+               return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, (unsigned char **)in, len, &itname##_it);\
+       } \
+       int i2d_##fname(const stname *a, unsigned char **out) \
+       { \
+               return ASN1_item_i2d((ASN1_VALUE *)a, out, &itname##_it);\
+       } 
+
+#define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
+               IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
+
+#define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \
+       IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
+       IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
+
+/* external definitions for primitive types */
+
+extern const ASN1_ITEM ASN1_BOOLEAN_it;
+extern const ASN1_ITEM ASN1_TBOOLEAN_it;
+extern const ASN1_ITEM ASN1_FBOOLEAN_it;
+extern const ASN1_ITEM ASN1_OBJECT_it;
+extern const ASN1_ITEM ASN1_ANY_it;
+extern const ASN1_ITEM ASN1_SEQUENCE_it;
+extern const ASN1_ITEM CBIGNUM_it;
+extern const ASN1_ITEM BIGNUM_it;
+extern const ASN1_ITEM LONG_it;
+extern const ASN1_ITEM ZLONG_it;
+
+DECLARE_STACK_OF(ASN1_VALUE)
+
+/* Functions used internally by the ASN1 code */
+
+int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
+void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
+int ASN1_template_new(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
+int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
+
+void ASN1_template_free(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
+int ASN1_template_d2i(ASN1_VALUE **pval, unsigned char **in, long len, const ASN1_TEMPLATE *tt);
+int ASN1_item_ex_d2i(ASN1_VALUE **pval, unsigned char **in, long len, const ASN1_ITEM *it,
+                               int tag, int aclass, char opt, ASN1_TLC *ctx);
+
+int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass);
+int ASN1_template_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_TEMPLATE *tt);
+void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
+
+int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
+int asn1_ex_c2i(ASN1_VALUE **pval, unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
+
+int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it);
+int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it);
+
+ASN1_VALUE ** asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
+
+const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt, int nullerr);
+
+int asn1_do_lock(ASN1_VALUE **pval, int op, const ASN1_ITEM *it);
+
+void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
+void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
+int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval, const ASN1_ITEM *it);
+int asn1_enc_save(ASN1_VALUE **pval, unsigned char *in, int inlen, const ASN1_ITEM *it);
+
+#ifdef  __cplusplus
+}
+#endif
+#endif
diff --git a/crypto/asn1/d2i_dhp.c b/crypto/asn1/d2i_dhp.c
deleted file mode 100644 (file)
index d64ec74..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/* crypto/asn1/d2i_dhp.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_DH
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/dh.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-DH *d2i_DHparams(DH **a, const unsigned char **pp, long length)
-       {
-       int i=ERR_R_NESTED_ASN1_ERROR;
-       ASN1_INTEGER *bs=NULL;
-       long v=0;
-       M_ASN1_D2I_vars(a,DH *,DH_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->p=BN_bin2bn(bs->data,bs->length,ret->p)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->g=BN_bin2bn(bs->data,bs->length,ret->g)) == NULL) goto err_bn;
-
-       if (!M_ASN1_D2I_end_sequence())
-               {
-               M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-               for (i=0; i<bs->length; i++)
-                       v=(v<<8)|(bs->data[i]);
-               ret->length=(int)v;
-               }
-
-       M_ASN1_BIT_STRING_free(bs);
-
-       M_ASN1_D2I_Finish_2(a);
-
-err_bn:
-       i=ERR_R_BN_LIB;
-err:
-       ASN1err(ASN1_F_D2I_DHPARAMS,i);
-       if ((ret != NULL) && ((a == NULL) || (*a != ret))) DH_free(ret);
-       if (bs != NULL) M_ASN1_BIT_STRING_free(bs);
-       return(NULL);
-       }
-#endif
diff --git a/crypto/asn1/d2i_dsap.c b/crypto/asn1/d2i_dsap.c
deleted file mode 100644 (file)
index 1b6b7cd..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/* crypto/asn1/d2i_dsap.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_DSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/dsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-#ifndef NO_NEG_PUBKEY_BUG
-#define d2i_ASN1_INTEGER d2i_ASN1_UINTEGER
-#endif
-
-DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length)
-       {
-       int i=ERR_R_NESTED_ASN1_ERROR;
-       ASN1_INTEGER *bs=NULL;
-       M_ASN1_D2I_vars(a,DSA *,DSA_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->p=BN_bin2bn(bs->data,bs->length,ret->p)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->q=BN_bin2bn(bs->data,bs->length,ret->q)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->g=BN_bin2bn(bs->data,bs->length,ret->g)) == NULL) goto err_bn;
-
-       M_ASN1_BIT_STRING_free(bs);
-       bs = NULL;
-
-       M_ASN1_D2I_Finish_2(a);
-
-err_bn:
-       i=ERR_R_BN_LIB;
-err:
-       ASN1err(ASN1_F_D2I_DSAPARAMS,i);
-       if ((ret != NULL) && ((a == NULL) || (*a != ret))) DSA_free(ret);
-       if (bs != NULL) M_ASN1_BIT_STRING_free(bs);
-       return(NULL);
-       }
-#endif
diff --git a/crypto/asn1/d2i_r_pr.c b/crypto/asn1/d2i_r_pr.c
deleted file mode 100644 (file)
index 46037a0..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/* crypto/asn1/d2i_r_pr.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_RSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/rsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-static ASN1_METHOD method={
-        (int (*)())  i2d_RSAPrivateKey,
-        (char *(*)())d2i_RSAPrivateKey,
-        (char *(*)())RSA_new,
-        (void (*)()) RSA_free};
-
-ASN1_METHOD *RSAPrivateKey_asn1_meth(void)
-       {
-       return(&method);
-       }
-
-RSA *d2i_RSAPrivateKey(RSA **a, const unsigned char **pp, long length)
-       {
-       int i=ASN1_R_PARSING;
-       ASN1_INTEGER *bs=NULL;
-       M_ASN1_D2I_vars(a,RSA *,RSA_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if (bs->length == 0)
-               ret->version=0;
-       else    ret->version=bs->data[0];
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->n=BN_bin2bn(bs->data,bs->length,ret->n)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->e=BN_bin2bn(bs->data,bs->length,ret->e)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->d=BN_bin2bn(bs->data,bs->length,ret->d)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->p=BN_bin2bn(bs->data,bs->length,ret->p)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->q=BN_bin2bn(bs->data,bs->length,ret->q)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->dmp1=BN_bin2bn(bs->data,bs->length,ret->dmp1)) == NULL)
-               goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->dmq1=BN_bin2bn(bs->data,bs->length,ret->dmq1)) == NULL)
-               goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->iqmp=BN_bin2bn(bs->data,bs->length,ret->iqmp)) == NULL)
-               goto err_bn;
-
-       M_ASN1_INTEGER_free(bs);
-       bs = NULL;
-
-       M_ASN1_D2I_Finish_2(a);
-err_bn:
-       i=ERR_R_BN_LIB;
-err:
-       ASN1err(ASN1_F_D2I_RSAPRIVATEKEY,i);
-       if ((ret != NULL) && ((a == NULL) || (*a != ret))) RSA_free(ret);
-       if (bs != NULL) M_ASN1_INTEGER_free(bs);
-
-       return(NULL);
-       }
-#else /* !NO_RSA */
-
-# if PEDANTIC
-static void *dummy=&dummy;
-# endif
-
-#endif
diff --git a/crypto/asn1/d2i_r_pu.c b/crypto/asn1/d2i_r_pu.c
deleted file mode 100644 (file)
index 0d11d85..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* crypto/asn1/d2i_r_pu.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_RSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/rsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-#ifndef NO_NEG_PUBKEY_BUG
-#define d2i_ASN1_INTEGER d2i_ASN1_UINTEGER
-#endif
-
-RSA *d2i_RSAPublicKey(RSA **a, const unsigned char **pp, long length)
-       {
-       int i=ASN1_R_PARSING;
-       ASN1_INTEGER *bs=NULL;
-       M_ASN1_D2I_vars(a,RSA *,RSA_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->n=BN_bin2bn(bs->data,bs->length,ret->n)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->e=BN_bin2bn(bs->data,bs->length,ret->e)) == NULL) goto err_bn;
-
-       M_ASN1_INTEGER_free(bs);
-       bs=NULL;
-
-       M_ASN1_D2I_Finish_2(a);
-
-err_bn:
-       i=ERR_R_BN_LIB;
-err:
-       ASN1err(ASN1_F_D2I_RSAPUBLICKEY,i);
-       if ((ret != NULL) && ((a == NULL) || (*a != ret))) RSA_free(ret);
-       if (bs != NULL) M_ASN1_INTEGER_free(bs);
-       return(NULL);
-       }
-#else /* !NO_RSA */
-
-# if PEDANTIC
-static void *dummy=&dummy;
-# endif
-
-#endif
diff --git a/crypto/asn1/d2i_s_pr.c b/crypto/asn1/d2i_s_pr.c
deleted file mode 100644 (file)
index 4722b26..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/* crypto/asn1/d2i_s_pr.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */
-
-#ifndef NO_DSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/dsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length)
-       {
-       int i=ASN1_R_PARSING;
-       ASN1_INTEGER *bs=NULL;
-       M_ASN1_D2I_vars(a,DSA *,DSA_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if (bs->length == 0)
-               ret->version=0;
-       else    ret->version=bs->data[0];
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->p=BN_bin2bn(bs->data,bs->length,ret->p)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->q=BN_bin2bn(bs->data,bs->length,ret->q)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->g=BN_bin2bn(bs->data,bs->length,ret->g)) == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->pub_key=BN_bin2bn(bs->data,bs->length,ret->pub_key))
-               == NULL) goto err_bn;
-       M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-       if ((ret->priv_key=BN_bin2bn(bs->data,bs->length,ret->priv_key))
-               == NULL) goto err_bn;
-
-       M_ASN1_INTEGER_free(bs);
-       bs = NULL;
-
-       M_ASN1_D2I_Finish_2(a);
-err_bn:
-       i=ERR_R_BN_LIB;
-err:
-       ASN1err(ASN1_F_D2I_DSAPRIVATEKEY,i);
-       if ((ret != NULL) && ((a == NULL) || (*a != ret))) DSA_free(ret);
-       if (bs != NULL) M_ASN1_INTEGER_free(bs);
-       return(NULL);
-       }
-#endif
diff --git a/crypto/asn1/d2i_s_pu.c b/crypto/asn1/d2i_s_pu.c
deleted file mode 100644 (file)
index 4d1a772..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/* crypto/asn1/d2i_s_pu.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */
-
-#ifndef NO_DSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/dsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-#ifndef NO_NEG_PUBKEY_BUG
-#define d2i_ASN1_INTEGER d2i_ASN1_UINTEGER
-#endif
-
-DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length)
-       {
-       int i=ASN1_R_PARSING;
-       ASN1_INTEGER *bs=NULL;
-       M_ASN1_D2I_vars(a,DSA *,DSA_new);
-
-       M_ASN1_D2I_Init();
-       if ((length != 0) && ((M_ASN1_next & (~V_ASN1_CONSTRUCTED))
-               == (V_ASN1_UNIVERSAL|(V_ASN1_INTEGER))))
-               {
-               c.slen=length;
-               M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-               if ((ret->pub_key=BN_bin2bn(bs->data,bs->length,ret->pub_key))
-                        == NULL)
-                        goto err_bn;
-               ret->write_params=0;
-               }
-       else
-               {
-               M_ASN1_D2I_start_sequence();
-               M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-               if ((ret->pub_key=BN_bin2bn(bs->data,bs->length,ret->pub_key))
-                       == NULL)
-                       goto err_bn;
-               M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-               if ((ret->p=BN_bin2bn(bs->data,bs->length,ret->p)) == NULL)
-                       goto err_bn;
-               M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-               if ((ret->q=BN_bin2bn(bs->data,bs->length,ret->q)) == NULL)
-                       goto err_bn;
-               M_ASN1_D2I_get(bs,d2i_ASN1_INTEGER);
-               if ((ret->g=BN_bin2bn(bs->data,bs->length,ret->g)) == NULL)
-                       goto err_bn;
-
-               ret->write_params=1;
-               }
-
-       M_ASN1_INTEGER_free(bs);
-       bs=NULL;
-       M_ASN1_D2I_Finish_2(a);
-err_bn:
-       i=ERR_R_BN_LIB;
-err:
-       ASN1err(ASN1_F_D2I_DSAPUBLICKEY,i);
-       if ((ret != NULL) && ((a == NULL) || (*a != ret))) DSA_free(ret);
-       if (bs != NULL) M_ASN1_INTEGER_free(bs);
-       return(NULL);
-       }
-#endif
diff --git a/crypto/asn1/i2d_dhp.c b/crypto/asn1/i2d_dhp.c
deleted file mode 100644 (file)
index 68d0c74..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* crypto/asn1/i2d_dhp.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_DH
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/asn1_mac.h>
-#include <openssl/dh.h>
-
-int i2d_DHparams(const DH *a, unsigned char **pp)
-       {
-       BIGNUM *num[3];
-       ASN1_INTEGER bs;
-       unsigned int j,i,tot=0,len,max=0;
-       int t,ret= -1;
-       unsigned char *p;
-
-       if (a == NULL) return(0);
-       num[0]=a->p;
-       num[1]=a->g;
-       if (a->length != 0)
-               {
-               if ((num[2]=BN_new()) == NULL) goto err;
-               if (!BN_set_word(num[2],a->length)) goto err;
-               }
-       else    
-               num[2]=NULL;
-
-       for (i=0; i<3; i++)
-               {
-               if (num[i] == NULL) continue;
-               j=BN_num_bits(num[i]);
-               len=((j == 0)?0:((j/8)+1));
-               if (len > max) max=len;
-               len=ASN1_object_size(0,len,
-                       (num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);
-               tot+=len;
-               }
-
-       t=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);
-       if (pp == NULL)
-               {
-               if (num[2] != NULL)
-                       BN_free(num[2]);
-               return(t);
-               }
-
-       p= *pp;
-       ASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-
-       bs.type=V_ASN1_INTEGER;
-       bs.data=(unsigned char *)OPENSSL_malloc(max+4);
-       if (bs.data == NULL)
-               {
-               ASN1err(ASN1_F_I2D_DHPARAMS,ERR_R_MALLOC_FAILURE);
-               goto err;
-               }
-
-       for (i=0; i<3; i++)
-               {
-               if (num[i] == NULL) continue;
-               bs.length=BN_bn2bin(num[i],bs.data);
-               i2d_ASN1_INTEGER(&bs,&p);
-               }
-       OPENSSL_free(bs.data);
-       ret=t;
-err:
-       if (num[2] != NULL) BN_free(num[2]);
-       *pp=p;
-       return(ret);
-       }
-#endif
diff --git a/crypto/asn1/i2d_dsap.c b/crypto/asn1/i2d_dsap.c
deleted file mode 100644 (file)
index 0289579..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/* crypto/asn1/i2d_dsap.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_DSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/asn1_mac.h>
-#include <openssl/dsa.h>
-
-int i2d_DSAparams(const DSA *a, unsigned char **pp)
-       {
-       BIGNUM *num[3];
-       ASN1_INTEGER bs;
-       unsigned int j,i,tot=0,len,max=0;
-       int t,ret= -1;
-       unsigned char *p;
-
-       if (a == NULL) return(0);
-       num[0]=a->p;
-       num[1]=a->q;
-       num[2]=a->g;
-
-       for (i=0; i<3; i++)
-               {
-               if (num[i] == NULL) continue;
-               j=BN_num_bits(num[i]);
-               len=((j == 0)?0:((j/8)+1));
-               if (len > max) max=len;
-               len=ASN1_object_size(0,len,
-                       (num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);
-               tot+=len;
-               }
-
-       t=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);
-       if (pp == NULL) return(t);
-
-       p= *pp;
-       ASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-
-       bs.type=V_ASN1_INTEGER;
-       bs.data=(unsigned char *)OPENSSL_malloc(max+4);
-       if (bs.data == NULL)
-               {
-               ASN1err(ASN1_F_I2D_DSAPARAMS,ERR_R_MALLOC_FAILURE);
-               goto err;
-               }
-
-       for (i=0; i<3; i++)
-               {
-               if (num[i] == NULL) continue;
-               bs.length=BN_bn2bin(num[i],bs.data);
-               i2d_ASN1_INTEGER(&bs,&p);
-               }
-       OPENSSL_free(bs.data);
-       ret=t;
-err:
-       *pp=p;
-       return(ret);
-       }
-#endif
-
diff --git a/crypto/asn1/i2d_r_pr.c b/crypto/asn1/i2d_r_pr.c
deleted file mode 100644 (file)
index 518f4af..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/* crypto/asn1/i2d_r_pr.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_RSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/rsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-int i2d_RSAPrivateKey(const RSA *a, unsigned char **pp)
-       {
-       BIGNUM *num[9];
-       unsigned char data[1];
-       ASN1_INTEGER bs;
-       unsigned int j,i,tot,t,len,max=0;
-       unsigned char *p;
-
-       if (a == NULL) return(0);
-
-       num[1]=a->n;
-       num[2]=a->e;
-       num[3]=a->d;
-       num[4]=a->p;
-       num[5]=a->q;
-       num[6]=a->dmp1;
-       num[7]=a->dmq1;
-       num[8]=a->iqmp;
-
-       bs.length=1;
-       bs.data=data;
-       bs.type=V_ASN1_INTEGER;
-       data[0]=a->version&0x7f;
-
-       tot=i2d_ASN1_INTEGER(&(bs),NULL);
-       for (i=1; i<9; i++)
-               {
-               j=BN_num_bits(num[i]);
-               len=((j == 0)?0:((j/8)+1));
-               if (len > max) max=len;
-               len=ASN1_object_size(0,len,
-                       (num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);
-               tot+=len;
-               }
-
-       t=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);
-       if (pp == NULL) return(t);
-
-       p= *pp;
-       ASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-
-       i2d_ASN1_INTEGER(&bs,&p);
-
-       bs.data=(unsigned char *)OPENSSL_malloc(max+4);
-       if (bs.data == NULL)
-               {
-               ASN1err(ASN1_F_I2D_RSAPRIVATEKEY,ERR_R_MALLOC_FAILURE);
-               return(-1);
-               }
-
-       for (i=1; i<9; i++)
-               {
-               bs.length=BN_bn2bin(num[i],bs.data);
-               i2d_ASN1_INTEGER(&bs,&p);
-               }
-       OPENSSL_free(bs.data);
-       *pp=p;
-       return(t);
-       }
-#else /* !NO_RSA */
-
-# if PEDANTIC
-static void *dummy=&dummy;
-# endif
-
-#endif
-
diff --git a/crypto/asn1/i2d_r_pu.c b/crypto/asn1/i2d_r_pu.c
deleted file mode 100644 (file)
index 4a07ff9..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/* crypto/asn1/i2d_r_pu.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_RSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/rsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-int i2d_RSAPublicKey(const RSA *a, unsigned char **pp)
-       {
-       BIGNUM *num[2];
-       ASN1_INTEGER bs;
-       unsigned int j,i,tot=0,len,max=0,t;
-       unsigned char *p;
-
-       if (a == NULL) return(0);
-
-       num[0]=a->n;
-       num[1]=a->e;
-
-       for (i=0; i<2; i++)
-               {
-               j=BN_num_bits(num[i]);
-               len=((j == 0)?0:((j/8)+1));
-               if (len > max) max=len;
-               len=ASN1_object_size(0,len,
-                       (num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);
-               tot+=len;
-               }
-
-       t=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);
-       if (pp == NULL) return(t);
-
-       p= *pp;
-       ASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-
-       bs.type=V_ASN1_INTEGER;
-       bs.data=(unsigned char *)OPENSSL_malloc(max+4);
-       if (bs.data == NULL)
-               {
-               ASN1err(ASN1_F_I2D_RSAPUBLICKEY,ERR_R_MALLOC_FAILURE);
-               return(-1);
-               }
-
-       for (i=0; i<2; i++)
-               {
-               bs.length=BN_bn2bin(num[i],bs.data);
-               i2d_ASN1_INTEGER(&bs,&p);
-               }
-       OPENSSL_free(bs.data);
-       *pp=p;
-       return(t);
-       }
-#else /* !NO_RSA */
-
-# if PEDANTIC
-static void *dummy=&dummy;
-# endif
-
-#endif
diff --git a/crypto/asn1/i2d_s_pr.c b/crypto/asn1/i2d_s_pr.c
deleted file mode 100644 (file)
index 124ad98..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/* crypto/asn1/i2d_s_pr.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_DSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/dsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp)
-       {
-       BIGNUM *num[6];
-       unsigned char data[1];
-       ASN1_INTEGER bs;
-       unsigned int j,i,tot,t,len,max=0;
-       unsigned char *p;
-
-       if (a == NULL) return(0);
-
-       num[1]=a->p;
-       num[2]=a->q;
-       num[3]=a->g;
-       num[4]=a->pub_key;
-       num[5]=a->priv_key;
-
-       bs.length=1;
-       bs.data=data;
-       bs.type=V_ASN1_INTEGER;
-       data[0]=a->version&0x7f;
-
-       tot=i2d_ASN1_INTEGER(&(bs),NULL);
-       for (i=1; i<6; i++)
-               {
-               j=BN_num_bits(num[i]);
-               len=((j == 0)?0:((j/8)+1));
-               if (len > max) max=len;
-               len=ASN1_object_size(0,len,
-                       (num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);
-               tot+=len;
-               }
-
-       t=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);
-       if (pp == NULL) return(t);
-
-       p= *pp;
-       ASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-
-       i2d_ASN1_INTEGER(&bs,&p);
-
-       bs.data=(unsigned char *)OPENSSL_malloc(max+4);
-       if (bs.data == NULL)
-               {
-               ASN1err(ASN1_F_I2D_DSAPRIVATEKEY,ERR_R_MALLOC_FAILURE);
-               return(-1);
-               }
-
-       for (i=1; i<6; i++)
-               {
-               bs.length=BN_bn2bin(num[i],bs.data);
-               i2d_ASN1_INTEGER(&bs,&p);
-               }
-       OPENSSL_free(bs.data);
-       *pp=p;
-       return(t);
-       }
-#endif
diff --git a/crypto/asn1/i2d_s_pu.c b/crypto/asn1/i2d_s_pu.c
deleted file mode 100644 (file)
index 96e9ff5..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/* crypto/asn1/i2d_s_pu.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef NO_DSA
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/bn.h>
-#include <openssl/dsa.h>
-#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
-
-int i2d_DSAPublicKey(const DSA *a, unsigned char **pp)
-       {
-       BIGNUM *num[4];
-       ASN1_INTEGER bs;
-       unsigned int j,i,tot=0,len,max=0,t=0,all,n=1;
-       unsigned char *p;
-
-       if (a == NULL) return(0);
-
-       all=a->write_params;
-
-       num[0]=a->pub_key;
-       if (all)
-               {
-               num[1]=a->p;
-               num[2]=a->q;
-               num[3]=a->g;
-               n=4;
-               }
-
-       for (i=0; i<n; i++)
-               {
-               j=BN_num_bits(num[i]);
-               len=((j == 0)?0:((j/8)+1));
-               if (len > max) max=len;
-               len=ASN1_object_size(0,len,
-                       (num[i]->neg)?V_ASN1_NEG_INTEGER:V_ASN1_INTEGER);
-               tot+=len;
-               }
-
-       if (all)
-               {
-               t=ASN1_object_size(1,tot,V_ASN1_SEQUENCE);
-               if (pp == NULL) return(t);
-               }
-       else
-               {
-               if (pp == NULL) return(tot);
-               }
-
-       p= *pp;
-       if (all)
-               ASN1_put_object(&p,1,tot,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-
-       bs.type=V_ASN1_INTEGER;
-       bs.data=(unsigned char *)OPENSSL_malloc(max+4);
-       if (bs.data == NULL)
-               {
-               ASN1err(ASN1_F_I2D_DSAPUBLICKEY,ERR_R_MALLOC_FAILURE);
-               return(-1);
-               }
-
-       for (i=0; i<n; i++)
-               {
-               bs.length=BN_bn2bin(num[i],bs.data);
-               i2d_ASN1_INTEGER(&bs,&p);
-               }
-       OPENSSL_free(bs.data);
-       *pp=p;
-       if(all) return(t);
-       else return(tot);
-       }
-#endif
index b091eac..82a6212 100644 (file)
@@ -61,6 +61,7 @@
 #include "cryptlib.h"
 #include <openssl/rsa.h>
 #include <openssl/objects.h>
+#include <openssl/asn1t.h>
 #include <openssl/asn1_mac.h>
 #include <openssl/evp.h>
 #include <openssl/x509.h>
 
 typedef struct netscape_pkey_st
        {
-       ASN1_INTEGER *version;
+       long version;
        X509_ALGOR *algor;
        ASN1_OCTET_STRING *private_key;
        } NETSCAPE_PKEY;
 
-static int i2d_NETSCAPE_PKEY(NETSCAPE_PKEY *a, unsigned char **pp);
-static NETSCAPE_PKEY *d2i_NETSCAPE_PKEY(NETSCAPE_PKEY **a,unsigned char **pp, long length);
-static NETSCAPE_PKEY *NETSCAPE_PKEY_new(void);
-static void NETSCAPE_PKEY_free(NETSCAPE_PKEY *);
+typedef struct netscape_encrypted_pkey_st
+       {
+       ASN1_OCTET_STRING *os;
+       /* This is the same structure as DigestInfo so use it:
+        * although this isn't really anything to do with
+        * digests.
+        */
+       X509_SIG *enckey;
+       } NETSCAPE_ENCRYPTED_PKEY;
+
+
+ASN1_BROKEN_SEQUENCE(NETSCAPE_ENCRYPTED_PKEY) = {
+       ASN1_SIMPLE(NETSCAPE_ENCRYPTED_PKEY, os, ASN1_OCTET_STRING),
+       ASN1_SIMPLE(NETSCAPE_ENCRYPTED_PKEY, enckey, X509_SIG)
+} ASN1_BROKEN_SEQUENCE_END(NETSCAPE_ENCRYPTED_PKEY);
+
+IMPLEMENT_ASN1_FUNCTIONS_const(NETSCAPE_ENCRYPTED_PKEY)
+
+ASN1_SEQUENCE(NETSCAPE_PKEY) = {
+       ASN1_SIMPLE(NETSCAPE_PKEY, version, LONG),
+       ASN1_SIMPLE(NETSCAPE_PKEY, algor, X509_ALGOR),
+       ASN1_SIMPLE(NETSCAPE_PKEY, private_key, ASN1_OCTET_STRING)
+} ASN1_SEQUENCE_END(NETSCAPE_PKEY);
+
+IMPLEMENT_ASN1_FUNCTIONS_const(NETSCAPE_PKEY)
+
+static RSA *d2i_RSA_NET_2(RSA **a, ASN1_OCTET_STRING *os,
+            int (*cb)(), int sgckey);
 
 int i2d_Netscape_RSA(const RSA *a, unsigned char **pp, int (*cb)())
 {
@@ -87,79 +112,78 @@ int i2d_Netscape_RSA(const RSA *a, unsigned char **pp, int (*cb)())
 
 int i2d_RSA_NET(const RSA *a, unsigned char **pp, int (*cb)(), int sgckey)
        {
-       int i,j,l[6];
-       NETSCAPE_PKEY *pkey;
+       int i, j, ret = 0;
+       int rsalen, pkeylen, olen;
+       NETSCAPE_PKEY *pkey = NULL;
+       NETSCAPE_ENCRYPTED_PKEY *enckey = NULL;
        unsigned char buf[256],*zz;
        unsigned char key[EVP_MAX_KEY_LENGTH];
        EVP_CIPHER_CTX ctx;
-       X509_ALGOR *alg=NULL;
-       ASN1_OCTET_STRING os,os2;
-       M_ASN1_I2D_vars(a);
 
        if (a == NULL) return(0);
 
-#ifdef WIN32
-       r=r; /* shut the damn compiler up :-) */
-#endif
-
-       os.data=os2.data=NULL;
        if ((pkey=NETSCAPE_PKEY_new()) == NULL) goto err;
-       if (!ASN1_INTEGER_set(pkey->version,0)) goto err;
+       if ((enckey=NETSCAPE_ENCRYPTED_PKEY_new()) == NULL) goto err;
+       pkey->version = 0;
 
-       if (pkey->algor->algorithm != NULL)
-               ASN1_OBJECT_free(pkey->algor->algorithm);
        pkey->algor->algorithm=OBJ_nid2obj(NID_rsaEncryption);
        if ((pkey->algor->parameter=ASN1_TYPE_new()) == NULL) goto err;
        pkey->algor->parameter->type=V_ASN1_NULL;
 
-       l[0]=i2d_RSAPrivateKey(a,NULL);
-       pkey->private_key->length=l[0];
+       rsalen = i2d_RSAPrivateKey(a, NULL);
 
-       os2.length=i2d_NETSCAPE_PKEY(pkey,NULL);
-       l[1]=i2d_ASN1_OCTET_STRING(&os2,NULL);
+       /* Fake some octet strings just for the initial length
+        * calculation.
+        */
 
-       if ((alg=X509_ALGOR_new()) == NULL) goto err;
-       if (alg->algorithm != NULL)
-               ASN1_OBJECT_free(alg->algorithm);
-       alg->algorithm=OBJ_nid2obj(NID_rc4);
-       if ((alg->parameter=ASN1_TYPE_new()) == NULL) goto err;
-       alg->parameter->type=V_ASN1_NULL;
+       pkey->private_key->length=rsalen;
 
-       l[2]=i2d_X509_ALGOR(alg,NULL);
-       l[3]=ASN1_object_size(1,l[2]+l[1],V_ASN1_SEQUENCE);
+       pkeylen=i2d_NETSCAPE_PKEY(pkey,NULL);
 
-#ifndef CONST_STRICT
-       os.data=(unsigned char *)"private-key";
-#endif
-       os.length=11;
-       l[4]=i2d_ASN1_OCTET_STRING(&os,NULL);
+       enckey->enckey->digest->length = pkeylen;
+
+       enckey->os->length = 11;        /* "private-key" */
 
-       l[5]=ASN1_object_size(1,l[4]+l[3],V_ASN1_SEQUENCE);
+       enckey->enckey->algor->algorithm=OBJ_nid2obj(NID_rc4);
+       if ((enckey->enckey->algor->parameter=ASN1_TYPE_new()) == NULL) goto err;
+       enckey->enckey->algor->parameter->type=V_ASN1_NULL;
 
        if (pp == NULL)
                {
-               if (pkey != NULL) NETSCAPE_PKEY_free(pkey);
-               if (alg != NULL) X509_ALGOR_free(alg);
-               return(l[5]);
+               olen = i2d_NETSCAPE_ENCRYPTED_PKEY(enckey, NULL);
+               NETSCAPE_PKEY_free(pkey);
+               NETSCAPE_ENCRYPTED_PKEY_free(enckey);
+               return olen;
                }
 
-       if (pkey->private_key->data != NULL)
-               OPENSSL_free(pkey->private_key->data);
-       if ((pkey->private_key->data=(unsigned char *)OPENSSL_malloc(l[0])) == NULL)
+
+       /* Since its RC4 encrypted length is actual length */
+       if ((zz=(unsigned char *)OPENSSL_malloc(rsalen)) == NULL)
                {
                ASN1err(ASN1_F_I2D_NETSCAPE_RSA,ERR_R_MALLOC_FAILURE);
                goto err;
                }
-       zz=pkey->private_key->data;
+
+       pkey->private_key->data = zz;
+       /* Write out private key encoding */
        i2d_RSAPrivateKey(a,&zz);
 
-       if ((os2.data=(unsigned char *)OPENSSL_malloc(os2.length)) == NULL)
+       if ((zz=OPENSSL_malloc(pkeylen)) == NULL)
+               {
+               ASN1err(ASN1_F_I2D_NETSCAPE_RSA,ERR_R_MALLOC_FAILURE);
+               goto err;
+               }
+
+       if (!ASN1_STRING_set(enckey->os, "private-key", -1)) 
                {
                ASN1err(ASN1_F_I2D_NETSCAPE_RSA,ERR_R_MALLOC_FAILURE);
                goto err;
                }
-       zz=os2.data;
+       enckey->enckey->digest->data = zz;
        i2d_NETSCAPE_PKEY(pkey,&zz);
+
+       /* Wipe the private key encoding */
+       memset(pkey->private_key->data, 0, rsalen);
                
        if (cb == NULL)
                cb=EVP_read_pw_string;
@@ -171,7 +195,7 @@ int i2d_RSA_NET(const RSA *a, unsigned char **pp, int (*cb)(), int sgckey)
                }
        i = strlen((char *)buf);
        /* If the key is used for SGC the algorithm is modified a little. */
-       if(sgckey){
+       if(sgckey) {
                EVP_MD_CTX mctx;
                EVP_DigestInit(&mctx, EVP_md5());
                EVP_DigestUpdate(&mctx, buf, i);
@@ -183,24 +207,18 @@ int i2d_RSA_NET(const RSA *a, unsigned char **pp, int (*cb)(), int sgckey)
        EVP_BytesToKey(EVP_rc4(),EVP_md5(),NULL,buf,i,1,key,NULL);
        memset(buf,0,256);
 
+       /* Encrypt private key in place */
+       zz = enckey->enckey->digest->data;
        EVP_CIPHER_CTX_init(&ctx);
        EVP_EncryptInit(&ctx,EVP_rc4(),key,NULL);
-       EVP_EncryptUpdate(&ctx,os2.data,&i,os2.data,os2.length);
-       EVP_EncryptFinal(&ctx,&(os2.data[i]),&j);
+       EVP_EncryptUpdate(&ctx,zz,&i,zz,pkeylen);
+       EVP_EncryptFinal(&ctx,zz + i,&j);
        EVP_CIPHER_CTX_cleanup(&ctx);
 
-       p= *pp;
-       ASN1_put_object(&p,1,l[4]+l[3],V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-       i2d_ASN1_OCTET_STRING(&os,&p);
-       ASN1_put_object(&p,1,l[2]+l[1],V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-       i2d_X509_ALGOR(alg,&p);
-       i2d_ASN1_OCTET_STRING(&os2,&p);
-       ret=l[5];
+       ret = i2d_NETSCAPE_ENCRYPTED_PKEY(enckey, pp);
 err:
-       if (os2.data != NULL) OPENSSL_free(os2.data);
-       if (alg != NULL) X509_ALGOR_free(alg);
-       if (pkey != NULL) NETSCAPE_PKEY_free(pkey);
-       r=r;
+       NETSCAPE_ENCRYPTED_PKEY_free(enckey);
+       NETSCAPE_PKEY_free(pkey);
        return(ret);
        }
 
@@ -213,68 +231,53 @@ RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length, int (*cb)(
 RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length, int (*cb)(), int sgckey)
        {
        RSA *ret=NULL;
-       ASN1_OCTET_STRING *os=NULL;
-       ASN1_CTX c;
+       const unsigned char *p, *kp;
+       NETSCAPE_ENCRYPTED_PKEY *enckey = NULL;
 
-       c.pp=(unsigned char **)pp; /* TMP UGLY CAST */
-       c.error=ASN1_R_DECODING_ERROR;
+       p = *pp;
+
+       enckey = d2i_NETSCAPE_ENCRYPTED_PKEY(NULL, &p, length);
+       if(!enckey) {
+               ASN1err(ASN1_F_D2I_NETSCAPE_RSA,ASN1_R_DECODING_ERROR);
+               return NULL;
+       }
 
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(os,d2i_ASN1_OCTET_STRING);
-       if ((os->length != 11) || (strncmp("private-key",
-               (char *)os->data,os->length) != 0))
+       if ((enckey->os->length != 11) || (strncmp("private-key",
+               (char *)enckey->os->data,11) != 0))
                {
                ASN1err(ASN1_F_D2I_NETSCAPE_RSA,ASN1_R_PRIVATE_KEY_HEADER_MISSING);
-               M_ASN1_BIT_STRING_free(os);
-               goto err;
+               NETSCAPE_ENCRYPTED_PKEY_free(enckey);
+               return NULL;
                }
-       M_ASN1_BIT_STRING_free(os);
-       c.q=c.p;
-       if ((ret=d2i_RSA_NET_2(a,(const unsigned char **)&c.p, /* TMP UGLY CAST */
-                              c.slen,cb, sgckey)) == NULL) goto err;
-       /* Note: some versions of IIS key files use length values that are
-        * too small for the surrounding SEQUENCEs. This following line
-        * effectively disable length checking.
-        */
-       c.slen = 0;
-
-       M_ASN1_D2I_Finish(a,RSA_free,ASN1_F_D2I_NETSCAPE_RSA);
+       if (OBJ_obj2nid(enckey->enckey->algor->algorithm) != NID_rc4)
+               {
+               ASN1err(ASN1_F_D2I_NETSCAPE_RSA_2,ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM);
+               goto err;
        }
+       kp = enckey->enckey->digest->data;
+       if (cb == NULL)
+               cb=EVP_read_pw_string;
+       if ((ret=d2i_RSA_NET_2(a, enckey->enckey->digest,cb, sgckey)) == NULL) goto err;
 
-RSA *d2i_Netscape_RSA_2(RSA **a, const unsigned char **pp, long length,
-            int (*cb)())
-{
-       return d2i_RSA_NET_2(a, pp, length, cb, 0);
-}
+       *pp = p;
+
+       err:
+       NETSCAPE_ENCRYPTED_PKEY_free(enckey);
+       return ret;
+
+       }
 
-RSA *d2i_RSA_NET_2(RSA **a, const unsigned char **pp, long length,
+static RSA *d2i_RSA_NET_2(RSA **a, ASN1_OCTET_STRING *os,
             int (*cb)(), int sgckey)
        {
        NETSCAPE_PKEY *pkey=NULL;
        RSA *ret=NULL;
        int i,j;
-       unsigned char buf[256],*zz;
+       unsigned char buf[256];
+       const unsigned char *zz;
        unsigned char key[EVP_MAX_KEY_LENGTH];
        EVP_CIPHER_CTX ctx;
-       X509_ALGOR *alg=NULL;
-       ASN1_OCTET_STRING *os=NULL;
-       ASN1_CTX c;
 
-       c.error=ERR_R_NESTED_ASN1_ERROR;
-       c.pp=(unsigned char **)pp;
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(alg,d2i_X509_ALGOR);
-       if (OBJ_obj2nid(alg->algorithm) != NID_rc4)
-               {
-               ASN1err(ASN1_F_D2I_NETSCAPE_RSA_2,ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM);
-               goto err;
-               }
-       M_ASN1_D2I_get(os,d2i_ASN1_OCTET_STRING);
-       if (cb == NULL)
-               cb=EVP_read_pw_string;
        i=cb(buf,256,"Enter Private Key password:",0);
        if (i != 0)
                {
@@ -311,72 +314,14 @@ RSA *d2i_RSA_NET_2(RSA **a, const unsigned char **pp, long length,
                }
                
        zz=pkey->private_key->data;
-       if ((ret=d2i_RSAPrivateKey(a,(const unsigned char **)&zz, /* TMP UGLY CAST */
-               pkey->private_key->length)) == NULL)
+       if ((ret=d2i_RSAPrivateKey(a,&zz,pkey->private_key->length)) == NULL)
                {
                ASN1err(ASN1_F_D2I_NETSCAPE_RSA_2,ASN1_R_UNABLE_TO_DECODE_RSA_KEY);
                goto err;
                }
-       if (!asn1_Finish(&c)) goto err;
-       *pp=c.p;
 err:
-       if (pkey != NULL) NETSCAPE_PKEY_free(pkey);
-       if (os != NULL) M_ASN1_BIT_STRING_free(os);
-       if (alg != NULL) X509_ALGOR_free(alg);
-       return(ret);
-       }
-
-static int i2d_NETSCAPE_PKEY(NETSCAPE_PKEY *a, unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-
-       M_ASN1_I2D_len(a->version,      i2d_ASN1_INTEGER);
-       M_ASN1_I2D_len(a->algor,        i2d_X509_ALGOR);
-       M_ASN1_I2D_len(a->private_key,  i2d_ASN1_OCTET_STRING);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->version,      i2d_ASN1_INTEGER);
-       M_ASN1_I2D_put(a->algor,        i2d_X509_ALGOR);
-       M_ASN1_I2D_put(a->private_key,  i2d_ASN1_OCTET_STRING);
-
-       M_ASN1_I2D_finish();
-       }
-
-static NETSCAPE_PKEY *d2i_NETSCAPE_PKEY(NETSCAPE_PKEY **a, unsigned char **pp,
-            long length)
-       {
-       M_ASN1_D2I_vars(a,NETSCAPE_PKEY *,NETSCAPE_PKEY_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER);
-       M_ASN1_D2I_get(ret->algor,d2i_X509_ALGOR);
-       M_ASN1_D2I_get(ret->private_key,d2i_ASN1_OCTET_STRING);
-       M_ASN1_D2I_Finish(a,NETSCAPE_PKEY_free,ASN1_F_D2I_NETSCAPE_PKEY);
-       }
-
-static NETSCAPE_PKEY *NETSCAPE_PKEY_new(void)
-       {
-       NETSCAPE_PKEY *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,NETSCAPE_PKEY);
-       M_ASN1_New(ret->version,M_ASN1_INTEGER_new);
-       M_ASN1_New(ret->algor,X509_ALGOR_new);
-       M_ASN1_New(ret->private_key,M_ASN1_OCTET_STRING_new);
+       NETSCAPE_PKEY_free(pkey);
        return(ret);
-       M_ASN1_New_Error(ASN1_F_NETSCAPE_PKEY_NEW);
-       }
-
-static void NETSCAPE_PKEY_free(NETSCAPE_PKEY *a)
-       {
-       if (a == NULL) return;
-       M_ASN1_INTEGER_free(a->version);
-       X509_ALGOR_free(a->algor);
-       M_ASN1_OCTET_STRING_free(a->private_key);
-       OPENSSL_free(a);
        }
 
 #endif /* NO_RC4 */
index 6e7f09b..36e5dce 100644 (file)
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <openssl/asn1_mac.h>
-#include <openssl/err.h>
+#include <openssl/asn1t.h>
 #include <openssl/x509.h>
 #include <openssl/objects.h>
 
-/* Netscape certificate sequence structure */
-
-int i2d_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE *a, unsigned char **pp)
+static int nsseq_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
 {
-       int v = 0;
-       M_ASN1_I2D_vars(a);
-       M_ASN1_I2D_len (a->type, i2d_ASN1_OBJECT);
-       M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(X509,a->certs,i2d_X509,0,
-                                            V_ASN1_SEQUENCE,v);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put (a->type, i2d_ASN1_OBJECT);
-       M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509,a->certs,i2d_X509,0,
-                                            V_ASN1_SEQUENCE,v);
-
-       M_ASN1_I2D_finish();
+       if(operation == ASN1_OP_NEW_POST) {
+               NETSCAPE_CERT_SEQUENCE *nsseq;
+               nsseq = (NETSCAPE_CERT_SEQUENCE *)*pval;
+               nsseq->type = OBJ_nid2obj(NID_netscape_cert_sequence);
+       }
+       return 1;
 }
 
-NETSCAPE_CERT_SEQUENCE *NETSCAPE_CERT_SEQUENCE_new(void)
-{
-       NETSCAPE_CERT_SEQUENCE *ret=NULL;
-       ASN1_CTX c;
-       M_ASN1_New_Malloc(ret, NETSCAPE_CERT_SEQUENCE);
-       /* Note hardcoded object type */
-       ret->type = OBJ_nid2obj(NID_netscape_cert_sequence);
-       ret->certs = NULL;
-       return (ret);
-       M_ASN1_New_Error(ASN1_F_NETSCAPE_CERT_SEQUENCE_NEW);
-}
+/* Netscape certificate sequence structure */
 
-NETSCAPE_CERT_SEQUENCE *d2i_NETSCAPE_CERT_SEQUENCE(NETSCAPE_CERT_SEQUENCE **a,
-            unsigned char **pp, long length)
-{
-       M_ASN1_D2I_vars(a,NETSCAPE_CERT_SEQUENCE *,
-                                       NETSCAPE_CERT_SEQUENCE_new);
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get (ret->type, d2i_ASN1_OBJECT);
-       M_ASN1_D2I_get_EXP_set_opt_type(X509,ret->certs,d2i_X509,X509_free,0,
-                                       V_ASN1_SEQUENCE);
-       M_ASN1_D2I_Finish(a, NETSCAPE_CERT_SEQUENCE_free,
-                         ASN1_F_D2I_NETSCAPE_CERT_SEQUENCE);
-}
+ASN1_SEQUENCE_cb(NETSCAPE_CERT_SEQUENCE, nsseq_cb) = {
+       ASN1_SIMPLE(NETSCAPE_CERT_SEQUENCE, type, ASN1_OBJECT),
+       ASN1_EXP_SEQUENCE_OF_OPT(NETSCAPE_CERT_SEQUENCE, certs, X509, 0)
+} ASN1_SEQUENCE_END_cb(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE);
 
-void NETSCAPE_CERT_SEQUENCE_free (NETSCAPE_CERT_SEQUENCE *a)
-{
-       if (a == NULL) return;
-       ASN1_OBJECT_free(a->type);
-       if(a->certs)
-           sk_X509_pop_free(a->certs, X509_free);
-       OPENSSL_free (a);
-}
+IMPLEMENT_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE)
index b7ed538..eedeb9e 100644 (file)
 
 #include <stdio.h>
 #include "cryptlib.h"
-#include <openssl/asn1_mac.h>
+#include <openssl/asn1t.h>
 #include <openssl/x509.h>
 #include <openssl/rand.h>
 
 /* PKCS#5 password based encryption structure */
 
-int i2d_PBEPARAM(PBEPARAM *a, unsigned char **pp)
-{
-       M_ASN1_I2D_vars(a);
-       M_ASN1_I2D_len (a->salt, i2d_ASN1_OCTET_STRING);
-       M_ASN1_I2D_len (a->iter, i2d_ASN1_INTEGER);
-
-       M_ASN1_I2D_seq_total ();
-
-       M_ASN1_I2D_put (a->salt, i2d_ASN1_OCTET_STRING);
-       M_ASN1_I2D_put (a->iter, i2d_ASN1_INTEGER);
-       M_ASN1_I2D_finish();
-}
-
-PBEPARAM *PBEPARAM_new(void)
-{
-       PBEPARAM *ret=NULL;
-       ASN1_CTX c;
-       M_ASN1_New_Malloc(ret, PBEPARAM);
-       M_ASN1_New(ret->iter,M_ASN1_INTEGER_new);
-       M_ASN1_New(ret->salt,M_ASN1_OCTET_STRING_new);
-       return (ret);
-       M_ASN1_New_Error(ASN1_F_PBEPARAM_NEW);
-}
-
-PBEPARAM *d2i_PBEPARAM(PBEPARAM **a, unsigned char **pp, long length)
-{
-       M_ASN1_D2I_vars(a,PBEPARAM *,PBEPARAM_new);
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get (ret->salt, d2i_ASN1_OCTET_STRING);
-       M_ASN1_D2I_get (ret->iter, d2i_ASN1_INTEGER);
-       M_ASN1_D2I_Finish(a, PBEPARAM_free, ASN1_F_D2I_PBEPARAM);
-}
+ASN1_SEQUENCE(PBEPARAM) = {
+       ASN1_SIMPLE(PBEPARAM, salt, ASN1_OCTET_STRING),
+       ASN1_SIMPLE(PBEPARAM, iter, ASN1_INTEGER)
+} ASN1_SEQUENCE_END(PBEPARAM);
 
-void PBEPARAM_free (PBEPARAM *a)
-{
-       if(a==NULL) return;
-       M_ASN1_OCTET_STRING_free(a->salt);
-       M_ASN1_INTEGER_free (a->iter);
-       OPENSSL_free (a);
-}
+IMPLEMENT_ASN1_FUNCTIONS(PBEPARAM)
 
 /* Return an algorithm identifier for a PKCS#5 PBE algorithm */
 
index 6a7b578..82526f3 100644 (file)
 
 #include <stdio.h>
 #include "cryptlib.h"
-#include <openssl/asn1_mac.h>
+#include <openssl/asn1t.h>
 #include <openssl/x509.h>
 #include <openssl/rand.h>
 
 /* PKCS#5 v2.0 password based encryption structures */
 
-int i2d_PBE2PARAM(PBE2PARAM *a, unsigned char **pp)
-{
-       M_ASN1_I2D_vars(a);
-       M_ASN1_I2D_len (a->keyfunc, i2d_X509_ALGOR);
-       M_ASN1_I2D_len (a->encryption, i2d_X509_ALGOR);
-
-       M_ASN1_I2D_seq_total ();
-
-       M_ASN1_I2D_put (a->keyfunc, i2d_X509_ALGOR);
-       M_ASN1_I2D_put (a->encryption, i2d_X509_ALGOR);
-
-       M_ASN1_I2D_finish();
-}
-
-PBE2PARAM *PBE2PARAM_new(void)
-{
-       PBE2PARAM *ret=NULL;
-       ASN1_CTX c;
-       M_ASN1_New_Malloc(ret, PBE2PARAM);
-       M_ASN1_New(ret->keyfunc,X509_ALGOR_new);
-       M_ASN1_New(ret->encryption,X509_ALGOR_new);
-       return (ret);
-       M_ASN1_New_Error(ASN1_F_PBE2PARAM_NEW);
-}
-
-PBE2PARAM *d2i_PBE2PARAM(PBE2PARAM **a, unsigned char **pp, long length)
-{
-       M_ASN1_D2I_vars(a,PBE2PARAM *,PBE2PARAM_new);
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get (ret->keyfunc, d2i_X509_ALGOR);
-       M_ASN1_D2I_get (ret->encryption, d2i_X509_ALGOR);
-       M_ASN1_D2I_Finish(a, PBE2PARAM_free, ASN1_F_D2I_PBE2PARAM);
-}
-
-void PBE2PARAM_free (PBE2PARAM *a)
-{
-       if(a==NULL) return;
-       X509_ALGOR_free(a->keyfunc);
-       X509_ALGOR_free(a->encryption);
-       OPENSSL_free (a);
-}
-
-int i2d_PBKDF2PARAM(PBKDF2PARAM *a, unsigned char **pp)
-{
-       M_ASN1_I2D_vars(a);
-       M_ASN1_I2D_len (a->salt, i2d_ASN1_TYPE);
-       M_ASN1_I2D_len (a->iter, i2d_ASN1_INTEGER);
-       M_ASN1_I2D_len (a->keylength, i2d_ASN1_INTEGER);
-       M_ASN1_I2D_len (a->prf, i2d_X509_ALGOR);
+ASN1_SEQUENCE(PBE2PARAM) = {
+       ASN1_SIMPLE(PBE2PARAM, keyfunc, X509_ALGOR),
+       ASN1_SIMPLE(PBE2PARAM, encryption, X509_ALGOR)
+} ASN1_SEQUENCE_END(PBE2PARAM);
 
-       M_ASN1_I2D_seq_total ();
+IMPLEMENT_ASN1_FUNCTIONS(PBE2PARAM)
 
-       M_ASN1_I2D_put (a->salt, i2d_ASN1_TYPE);
-       M_ASN1_I2D_put (a->iter, i2d_ASN1_INTEGER);
-       M_ASN1_I2D_put (a->keylength, i2d_ASN1_INTEGER);
-       M_ASN1_I2D_put (a->prf, i2d_X509_ALGOR);
+ASN1_SEQUENCE(PBKDF2PARAM) = {
+       ASN1_SIMPLE(PBKDF2PARAM, salt, ASN1_ANY),
+       ASN1_SIMPLE(PBKDF2PARAM, iter, ASN1_INTEGER),
+       ASN1_OPT(PBKDF2PARAM, keylength, ASN1_INTEGER),
+       ASN1_OPT(PBKDF2PARAM, prf, X509_ALGOR)
+} ASN1_SEQUENCE_END(PBKDF2PARAM);
 
-       M_ASN1_I2D_finish();
-}
-
-PBKDF2PARAM *PBKDF2PARAM_new(void)
-{
-       PBKDF2PARAM *ret=NULL;
-       ASN1_CTX c;
-       M_ASN1_New_Malloc(ret, PBKDF2PARAM);
-       M_ASN1_New(ret->salt, ASN1_TYPE_new);
-       M_ASN1_New(ret->iter, M_ASN1_INTEGER_new);
-       ret->keylength = NULL;
-       ret->prf = NULL;
-       return (ret);
-       M_ASN1_New_Error(ASN1_F_PBKDF2PARAM_NEW);
-}
-
-PBKDF2PARAM *d2i_PBKDF2PARAM(PBKDF2PARAM **a, unsigned char **pp,
-            long length)
-{
-       M_ASN1_D2I_vars(a,PBKDF2PARAM *,PBKDF2PARAM_new);
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get (ret->salt, d2i_ASN1_TYPE);
-       M_ASN1_D2I_get (ret->iter, d2i_ASN1_INTEGER);
-       M_ASN1_D2I_get_opt (ret->keylength, d2i_ASN1_INTEGER, V_ASN1_INTEGER);
-       M_ASN1_D2I_get_opt (ret->prf, d2i_X509_ALGOR, V_ASN1_SEQUENCE);
-       M_ASN1_D2I_Finish(a, PBKDF2PARAM_free, ASN1_F_D2I_PBKDF2PARAM);
-}
-
-void PBKDF2PARAM_free (PBKDF2PARAM *a)
-{
-       if(a==NULL) return;
-       ASN1_TYPE_free(a->salt);
-       M_ASN1_INTEGER_free(a->iter);
-       M_ASN1_INTEGER_free(a->keylength);
-       X509_ALGOR_free(a->prf);
-       OPENSSL_free (a);
-}
+IMPLEMENT_ASN1_FUNCTIONS(PBKDF2PARAM)
 
 /* Return an algorithm identifier for a PKCS#5 v2.0 PBE algorithm:
  * yes I know this is horrible!
diff --git a/crypto/asn1/p7_dgst.c b/crypto/asn1/p7_dgst.c
deleted file mode 100644 (file)
index c170244..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/* crypto/asn1/p7_dgst.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-#include <openssl/x509.h>
-
-int i2d_PKCS7_DIGEST(PKCS7_DIGEST *a, unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-       M_ASN1_I2D_len(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_len(a->md,i2d_X509_ALGOR);
-       M_ASN1_I2D_len(a->contents,i2d_PKCS7);
-       M_ASN1_I2D_len(a->digest,i2d_ASN1_OCTET_STRING);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_put(a->md,i2d_X509_ALGOR);
-       M_ASN1_I2D_put(a->contents,i2d_PKCS7);
-       M_ASN1_I2D_put(a->digest,i2d_ASN1_OCTET_STRING);
-
-       M_ASN1_I2D_finish();
-       }
-
-PKCS7_DIGEST *d2i_PKCS7_DIGEST(PKCS7_DIGEST **a, unsigned char **pp,
-            long length)
-       {
-       M_ASN1_D2I_vars(a,PKCS7_DIGEST *,PKCS7_DIGEST_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER);
-       M_ASN1_D2I_get(ret->md,d2i_X509_ALGOR);
-       M_ASN1_D2I_get(ret->contents,d2i_PKCS7);
-       M_ASN1_D2I_get(ret->digest,d2i_ASN1_OCTET_STRING);
-
-       M_ASN1_D2I_Finish(a,PKCS7_DIGEST_free,ASN1_F_D2I_PKCS7_DIGEST);
-       }
-
-PKCS7_DIGEST *PKCS7_DIGEST_new(void)
-       {
-       PKCS7_DIGEST *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,PKCS7_DIGEST);
-       M_ASN1_New(ret->version,M_ASN1_INTEGER_new);
-       M_ASN1_New(ret->md,X509_ALGOR_new);
-       M_ASN1_New(ret->contents,PKCS7_new);
-       M_ASN1_New(ret->digest,M_ASN1_OCTET_STRING_new);
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_PKCS7_DIGEST_NEW);
-       }
-
-void PKCS7_DIGEST_free(PKCS7_DIGEST *a)
-       {
-       if (a == NULL) return;
-       M_ASN1_INTEGER_free(a->version);
-       X509_ALGOR_free(a->md);
-       PKCS7_free(a->contents);
-       M_ASN1_OCTET_STRING_free(a->digest);
-       OPENSSL_free(a);
-       }
-
diff --git a/crypto/asn1/p7_enc.c b/crypto/asn1/p7_enc.c
deleted file mode 100644 (file)
index 38ccafb..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/* crypto/asn1/p7_enc.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-#include <openssl/x509.h>
-
-int i2d_PKCS7_ENCRYPT(PKCS7_ENCRYPT *a, unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-       M_ASN1_I2D_len(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_len(a->enc_data,i2d_PKCS7_ENC_CONTENT);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_put(a->enc_data,i2d_PKCS7_ENC_CONTENT);
-
-       M_ASN1_I2D_finish();
-       }
-
-PKCS7_ENCRYPT *d2i_PKCS7_ENCRYPT(PKCS7_ENCRYPT **a, unsigned char **pp,
-            long length)
-       {
-       M_ASN1_D2I_vars(a,PKCS7_ENCRYPT *,PKCS7_ENCRYPT_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER);
-       M_ASN1_D2I_get(ret->enc_data,d2i_PKCS7_ENC_CONTENT);
-
-       M_ASN1_D2I_Finish(a,PKCS7_ENCRYPT_free,ASN1_F_D2I_PKCS7_ENCRYPT);
-       }
-
-PKCS7_ENCRYPT *PKCS7_ENCRYPT_new(void)
-       {
-       PKCS7_ENCRYPT *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,PKCS7_ENCRYPT);
-       M_ASN1_New(ret->version,M_ASN1_INTEGER_new);
-       M_ASN1_New(ret->enc_data,PKCS7_ENC_CONTENT_new);
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_PKCS7_ENCRYPT_NEW);
-       }
-
-void PKCS7_ENCRYPT_free(PKCS7_ENCRYPT *a)
-       {
-       if (a == NULL) return;
-       M_ASN1_INTEGER_free(a->version);
-       PKCS7_ENC_CONTENT_free(a->enc_data);
-       OPENSSL_free(a);
-       }
-
diff --git a/crypto/asn1/p7_enc_c.c b/crypto/asn1/p7_enc_c.c
deleted file mode 100644 (file)
index 031178a..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/* crypto/asn1/p7_enc_c.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-#include <openssl/x509.h>
-
-int i2d_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT *a, unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-       M_ASN1_I2D_len(a->content_type,i2d_ASN1_OBJECT);
-       M_ASN1_I2D_len(a->algorithm,i2d_X509_ALGOR);
-       M_ASN1_I2D_len_IMP_opt(a->enc_data,i2d_ASN1_OCTET_STRING);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->content_type,i2d_ASN1_OBJECT);
-       M_ASN1_I2D_put(a->algorithm,i2d_X509_ALGOR);
-       M_ASN1_I2D_put_IMP_opt(a->enc_data,i2d_ASN1_OCTET_STRING,0);
-
-       M_ASN1_I2D_finish();
-       }
-
-PKCS7_ENC_CONTENT *d2i_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT **a,
-            unsigned char **pp, long length)
-       {
-       M_ASN1_D2I_vars(a,PKCS7_ENC_CONTENT *,PKCS7_ENC_CONTENT_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->content_type,d2i_ASN1_OBJECT);
-       M_ASN1_D2I_get(ret->algorithm,d2i_X509_ALGOR);
-       M_ASN1_D2I_get_IMP_opt(ret->enc_data,d2i_ASN1_OCTET_STRING,0,
-               V_ASN1_OCTET_STRING);
-
-       M_ASN1_D2I_Finish(a,PKCS7_ENC_CONTENT_free,
-               ASN1_F_D2I_PKCS7_ENC_CONTENT);
-       }
-
-PKCS7_ENC_CONTENT *PKCS7_ENC_CONTENT_new(void)
-       {
-       PKCS7_ENC_CONTENT *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,PKCS7_ENC_CONTENT);
-       /* M_ASN1_New(ret->content_type,ASN1_OBJECT_new); */
-       /* We will almost always want this: so make it the default */
-       ret->content_type=OBJ_nid2obj(NID_pkcs7_data);
-       M_ASN1_New(ret->algorithm,X509_ALGOR_new);
-       ret->enc_data=NULL;
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_PKCS7_ENC_CONTENT_NEW);
-       }
-
-void PKCS7_ENC_CONTENT_free(PKCS7_ENC_CONTENT *a)
-       {
-       if (a == NULL) return;
-       ASN1_OBJECT_free(a->content_type);
-       X509_ALGOR_free(a->algorithm);
-       M_ASN1_OCTET_STRING_free(a->enc_data);
-       OPENSSL_free(a);
-       }
-
diff --git a/crypto/asn1/p7_evp.c b/crypto/asn1/p7_evp.c
deleted file mode 100644 (file)
index 60be3e5..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/* crypto/asn1/p7_evp.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-#include <openssl/x509.h>
-
-int i2d_PKCS7_ENVELOPE(PKCS7_ENVELOPE *a, unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-       M_ASN1_I2D_len(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_len_SET_type(PKCS7_RECIP_INFO,a->recipientinfo,
-                               i2d_PKCS7_RECIP_INFO);
-       M_ASN1_I2D_len(a->enc_data,i2d_PKCS7_ENC_CONTENT);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_put_SET_type(PKCS7_RECIP_INFO,a->recipientinfo,
-                               i2d_PKCS7_RECIP_INFO);
-       M_ASN1_I2D_put(a->enc_data,i2d_PKCS7_ENC_CONTENT);
-
-       M_ASN1_I2D_finish();
-       }
-
-PKCS7_ENVELOPE *d2i_PKCS7_ENVELOPE(PKCS7_ENVELOPE **a, unsigned char **pp,
-            long length)
-       {
-       M_ASN1_D2I_vars(a,PKCS7_ENVELOPE *,PKCS7_ENVELOPE_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER);
-       M_ASN1_D2I_get_set_type(PKCS7_RECIP_INFO,ret->recipientinfo,
-                               d2i_PKCS7_RECIP_INFO,PKCS7_RECIP_INFO_free);
-       M_ASN1_D2I_get(ret->enc_data,d2i_PKCS7_ENC_CONTENT);
-
-       M_ASN1_D2I_Finish(a,PKCS7_ENVELOPE_free,ASN1_F_D2I_PKCS7_ENVELOPE);
-       }
-
-PKCS7_ENVELOPE *PKCS7_ENVELOPE_new(void)
-       {
-       PKCS7_ENVELOPE *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,PKCS7_ENVELOPE);
-       M_ASN1_New(ret->version,M_ASN1_INTEGER_new);
-       M_ASN1_New(ret->recipientinfo,sk_PKCS7_RECIP_INFO_new_null);
-       M_ASN1_New(ret->enc_data,PKCS7_ENC_CONTENT_new);
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_PKCS7_ENVELOPE_NEW);
-       }
-
-void PKCS7_ENVELOPE_free(PKCS7_ENVELOPE *a)
-       {
-       if (a == NULL) return;
-       M_ASN1_INTEGER_free(a->version);
-       sk_PKCS7_RECIP_INFO_pop_free(a->recipientinfo,PKCS7_RECIP_INFO_free);
-       PKCS7_ENC_CONTENT_free(a->enc_data);
-       OPENSSL_free(a);
-       }
-
diff --git a/crypto/asn1/p7_i_s.c b/crypto/asn1/p7_i_s.c
deleted file mode 100644 (file)
index 4a7260a..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/* crypto/asn1/p7_i_s.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-#include <openssl/x509.h>
-
-int i2d_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL *a,
-            unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-       M_ASN1_I2D_len(a->issuer,i2d_X509_NAME);
-       M_ASN1_I2D_len(a->serial,i2d_ASN1_INTEGER);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->issuer,i2d_X509_NAME);
-       M_ASN1_I2D_put(a->serial,i2d_ASN1_INTEGER);
-
-       M_ASN1_I2D_finish();
-       }
-
-PKCS7_ISSUER_AND_SERIAL *d2i_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL **a, unsigned char **pp, long length)
-       {
-       M_ASN1_D2I_vars(a,PKCS7_ISSUER_AND_SERIAL *,PKCS7_ISSUER_AND_SERIAL_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->issuer,d2i_X509_NAME);
-       M_ASN1_D2I_get(ret->serial,d2i_ASN1_INTEGER);
-       M_ASN1_D2I_Finish(a,PKCS7_ISSUER_AND_SERIAL_free,
-               ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL);
-       }
-
-PKCS7_ISSUER_AND_SERIAL *PKCS7_ISSUER_AND_SERIAL_new(void)
-       {
-       PKCS7_ISSUER_AND_SERIAL *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,PKCS7_ISSUER_AND_SERIAL);
-       M_ASN1_New(ret->issuer,X509_NAME_new);
-       M_ASN1_New(ret->serial,M_ASN1_INTEGER_new);
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW);
-       }
-
-void PKCS7_ISSUER_AND_SERIAL_free(PKCS7_ISSUER_AND_SERIAL *a)
-       {
-       if (a == NULL) return;
-       X509_NAME_free(a->issuer);
-       M_ASN1_INTEGER_free(a->serial);
-       OPENSSL_free(a);
-       }
-
diff --git a/crypto/asn1/p7_lib.c b/crypto/asn1/p7_lib.c
deleted file mode 100644 (file)
index b1196ef..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-/* crypto/asn1/p7_lib.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-#include <openssl/pkcs7.h>
-#include <openssl/objects.h>
-
-#ifdef PKCS7_INDEFINITE_ENCODING
-
-int i2d_PKCS7(PKCS7 *a, unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-       if (a->asn1 != NULL)
-               {
-               if (pp == NULL)
-                       return((int)a->length);
-               memcpy(*pp,a->asn1,(int)a->length);
-               *pp+=a->length;
-               return((int)a->length);
-               }
-
-       ret+=4; /* sequence, BER header plus '0 0' end padding */
-       M_ASN1_I2D_len(a->type,i2d_ASN1_OBJECT);
-       if (a->d.ptr != NULL)
-               {
-               ret+=4; /* explicit tag [ 0 ] BER plus '0 0' */
-               switch (OBJ_obj2nid(a->type))
-                       {
-               case NID_pkcs7_data:
-                       M_ASN1_I2D_len(a->d.data,i2d_ASN1_OCTET_STRING);
-                       break;
-               case NID_pkcs7_signed:
-                       M_ASN1_I2D_len(a->d.sign,i2d_PKCS7_SIGNED);
-                       break;
-               case NID_pkcs7_enveloped:
-                       M_ASN1_I2D_len(a->d.enveloped,i2d_PKCS7_ENVELOPE);
-                       break;
-               case NID_pkcs7_signedAndEnveloped:
-                       M_ASN1_I2D_len(a->d.signed_and_enveloped,
-                               i2d_PKCS7_SIGN_ENVELOPE);
-                       break;
-               case NID_pkcs7_digest:
-                       M_ASN1_I2D_len(a->d.digest,i2d_PKCS7_DIGEST);
-                       break;
-               case NID_pkcs7_encrypted:
-                       M_ASN1_I2D_len(a->d.encrypted,i2d_PKCS7_ENCRYPT);
-                       break;
-               default:
-                       M_ASN1_I2D_len(a->d.other,i2d_ASN1_TYPE);
-                       break;
-                       }
-               }
-       r=ret;
-       if (pp == NULL) return(r);
-       p= *pp;
-       M_ASN1_I2D_INF_seq_start(V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
-       M_ASN1_I2D_put(a->type,i2d_ASN1_OBJECT);
-
-       if (a->d.ptr != NULL)
-               {
-               M_ASN1_I2D_INF_seq_start(0,V_ASN1_CONTEXT_SPECIFIC);
-               switch (OBJ_obj2nid(a->type))
-                       {
-               case NID_pkcs7_data:
-                       M_ASN1_I2D_put(a->d.data,i2d_ASN1_OCTET_STRING);
-                       break;
-               case NID_pkcs7_signed:
-                       M_ASN1_I2D_put(a->d.sign,i2d_PKCS7_SIGNED);
-                       break;
-               case NID_pkcs7_enveloped:
-                       M_ASN1_I2D_put(a->d.enveloped,i2d_PKCS7_ENVELOPE);
-                       break;
-               case NID_pkcs7_signedAndEnveloped:
-                       M_ASN1_I2D_put(a->d.signed_and_enveloped,
-                               i2d_PKCS7_SIGN_ENVELOPE);
-                       break;
-               case NID_pkcs7_digest:
-                       M_ASN1_I2D_put(a->d.digest,i2d_PKCS7_DIGEST);
-                       break;
-               case NID_pkcs7_encrypted:
-                       M_ASN1_I2D_put(a->d.encrypted,i2d_PKCS7_ENCRYPT);
-                       break;
-               default:
-                       M_ASN1_I2D_put(a->d.other,i2d_ASN1_TYPE);
-                       break;
-                       }
-               M_ASN1_I2D_INF_seq_end();
-               }
-       M_ASN1_I2D_INF_seq_end();
-       M_ASN1_I2D_finish();
-       }
-
-#else
-
-int i2d_PKCS7(PKCS7 *a, unsigned char **pp)
-       {
-       int explen = 0;
-       M_ASN1_I2D_vars(a);
-
-       if (a->asn1 != NULL)
-               {
-               if (pp == NULL)
-                       return((int)a->length);
-               memcpy(*pp,a->asn1,(int)a->length);
-               *pp+=a->length;
-               return((int)a->length);
-               }
-
-       M_ASN1_I2D_len(a->type,i2d_ASN1_OBJECT);
-       if (a->d.ptr != NULL)
-               {
-               /* Save current length */
-               r = ret;
-               switch (OBJ_obj2nid(a->type))
-                       {
-               case NID_pkcs7_data:
-                       M_ASN1_I2D_len(a->d.data,i2d_ASN1_OCTET_STRING);
-                       break;
-               case NID_pkcs7_signed:
-                       M_ASN1_I2D_len(a->d.sign,i2d_PKCS7_SIGNED);
-                       break;
-               case NID_pkcs7_enveloped:
-                       M_ASN1_I2D_len(a->d.enveloped,i2d_PKCS7_ENVELOPE);
-                       break;
-               case NID_pkcs7_signedAndEnveloped:
-                       M_ASN1_I2D_len(a->d.signed_and_enveloped,
-                               i2d_PKCS7_SIGN_ENVELOPE);
-                       break;
-               case NID_pkcs7_digest:
-                       M_ASN1_I2D_len(a->d.digest,i2d_PKCS7_DIGEST);
-                       break;
-               case NID_pkcs7_encrypted:
-                       M_ASN1_I2D_len(a->d.encrypted,i2d_PKCS7_ENCRYPT);
-                       break;
-               default:
-                       M_ASN1_I2D_len(a->d.other,i2d_ASN1_TYPE);
-                       break;
-                       }
-               /* Work out explicit tag content size */
-               explen = ret - r;
-               /* Work out explicit tag size: Note: ASN1_object_size
-                * includes the content length.
-                */
-               ret =  r + ASN1_object_size(1, explen, 0);
-               }
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->type,i2d_ASN1_OBJECT);
-
-       if (a->d.ptr != NULL)
-               {
-               ASN1_put_object(&p, 1, explen, 0, V_ASN1_CONTEXT_SPECIFIC);
-               switch (OBJ_obj2nid(a->type))
-                       {
-               case NID_pkcs7_data:
-                       M_ASN1_I2D_put(a->d.data,i2d_ASN1_OCTET_STRING);
-                       break;
-               case NID_pkcs7_signed:
-                       M_ASN1_I2D_put(a->d.sign,i2d_PKCS7_SIGNED);
-                       break;
-               case NID_pkcs7_enveloped:
-                       M_ASN1_I2D_put(a->d.enveloped,i2d_PKCS7_ENVELOPE);
-                       break;
-               case NID_pkcs7_signedAndEnveloped:
-                       M_ASN1_I2D_put(a->d.signed_and_enveloped,
-                               i2d_PKCS7_SIGN_ENVELOPE);
-                       break;
-               case NID_pkcs7_digest:
-                       M_ASN1_I2D_put(a->d.digest,i2d_PKCS7_DIGEST);
-                       break;
-               case NID_pkcs7_encrypted:
-                       M_ASN1_I2D_put(a->d.encrypted,i2d_PKCS7_ENCRYPT);
-                       break;
-               default:
-                       M_ASN1_I2D_put(a->d.other,i2d_ASN1_TYPE);
-                       break;
-                       }
-               }
-       M_ASN1_I2D_finish();
-       }
-
-#endif
-
-PKCS7 *d2i_PKCS7(PKCS7 **a, unsigned char **pp, long length)
-       {
-       M_ASN1_D2I_vars(a,PKCS7 *,PKCS7_new);
-
-       if ((a != NULL) && ((*a) != NULL))
-               {
-               if ((*a)->asn1 != NULL)
-                       {
-                       OPENSSL_free((*a)->asn1);
-                       (*a)->asn1=NULL;
-                       }
-               (*a)->length=0;
-               }
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->type,d2i_ASN1_OBJECT);
-       if (!M_ASN1_D2I_end_sequence())
-               {
-               int Tinf,Ttag,Tclass;
-               long Tlen;
-
-               if (M_ASN1_next != (V_ASN1_CONSTRUCTED|
-                       V_ASN1_CONTEXT_SPECIFIC|0))
-                       {
-                       c.error=ASN1_R_BAD_PKCS7_CONTENT;
-                       c.line=__LINE__;
-                       goto err;
-                       }
-
-               ret->detached=0;
-
-               c.q=c.p;
-               Tinf=ASN1_get_object(&c.p,&Tlen,&Ttag,&Tclass,
-                       (c.inf & 1)?(length+ *pp-c.q):c.slen);
-               if (Tinf & 0x80) { c.line=__LINE__; goto err; }
-               c.slen-=(c.p-c.q);
-
-               switch (OBJ_obj2nid(ret->type))
-                       {
-               case NID_pkcs7_data:
-                       M_ASN1_D2I_get(ret->d.data,d2i_ASN1_OCTET_STRING);
-                       break;
-               case NID_pkcs7_signed:
-                       M_ASN1_D2I_get(ret->d.sign,d2i_PKCS7_SIGNED);
-                       if (ret->d.sign->contents->d.ptr == NULL)
-                               ret->detached=1;
-                       break;
-               case NID_pkcs7_enveloped:
-                       M_ASN1_D2I_get(ret->d.enveloped,d2i_PKCS7_ENVELOPE);
-                       break;
-               case NID_pkcs7_signedAndEnveloped:
-                       M_ASN1_D2I_get(ret->d.signed_and_enveloped,
-                               d2i_PKCS7_SIGN_ENVELOPE);
-                       break;
-               case NID_pkcs7_digest:
-                       M_ASN1_D2I_get(ret->d.digest,d2i_PKCS7_DIGEST);
-                       break;
-               case NID_pkcs7_encrypted:
-                       M_ASN1_D2I_get(ret->d.encrypted,d2i_PKCS7_ENCRYPT);
-                       break;
-               default:
-                       M_ASN1_D2I_get(ret->d.other,d2i_ASN1_TYPE);
-                       break;
-                       }
-               if (Tinf == (1|V_ASN1_CONSTRUCTED))
-                       {
-                       if (!ASN1_check_infinite_end(&c.p,c.slen))
-                               {
-                               c.error=ERR_R_MISSING_ASN1_EOS;
-                               c.line=__LINE__;
-                               goto err;
-                               }
-                       }
-               }
-       else
-               ret->detached=1;
-               
-       M_ASN1_D2I_Finish(a,PKCS7_free,ASN1_F_D2I_PKCS7);
-       }
-
-PKCS7 *PKCS7_new(void)
-       {
-       PKCS7 *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,PKCS7);
-       ret->type=OBJ_nid2obj(NID_undef);
-       ret->asn1=NULL;
-       ret->length=0;
-       ret->detached=0;
-       ret->d.ptr=NULL;
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_PKCS7_NEW);
-       }
-
-void PKCS7_free(PKCS7 *a)
-       {
-       if (a == NULL) return;
-
-       PKCS7_content_free(a);
-       if (a->type != NULL)
-               {
-               ASN1_OBJECT_free(a->type);
-               }
-       OPENSSL_free(a);
-       }
-
-void PKCS7_content_free(PKCS7 *a)
-       {
-       if(a == NULL)
-           return;
-
-       if (a->asn1 != NULL) OPENSSL_free(a->asn1);
-
-       if (a->d.ptr != NULL)
-               {
-               if (a->type == NULL) return;
-
-               switch (OBJ_obj2nid(a->type))
-                       {
-               case NID_pkcs7_data:
-                       M_ASN1_OCTET_STRING_free(a->d.data);
-                       break;
-               case NID_pkcs7_signed:
-                       PKCS7_SIGNED_free(a->d.sign);
-                       break;
-               case NID_pkcs7_enveloped:
-                       PKCS7_ENVELOPE_free(a->d.enveloped);
-                       break;
-               case NID_pkcs7_signedAndEnveloped:
-                       PKCS7_SIGN_ENVELOPE_free(a->d.signed_and_enveloped);
-                       break;
-               case NID_pkcs7_digest:
-                       PKCS7_DIGEST_free(a->d.digest);
-                       break;
-               case NID_pkcs7_encrypted:
-                       PKCS7_ENCRYPT_free(a->d.encrypted);
-                       break;
-               default:
-                       ASN1_TYPE_free(a->d.other);
-                       break;
-                       }
-               }
-       a->d.ptr=NULL;
-       }
-
-IMPLEMENT_STACK_OF(PKCS7)
-IMPLEMENT_ASN1_SET_OF(PKCS7)
diff --git a/crypto/asn1/p7_recip.c b/crypto/asn1/p7_recip.c
deleted file mode 100644 (file)
index 5f6c88a..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/* crypto/asn1/p7_recip.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdio.h>
-#include "cryptlib.h"
-#include <openssl/asn1_mac.h>
-#include <openssl/x509.h>
-
-int i2d_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO *a, unsigned char **pp)
-       {
-       M_ASN1_I2D_vars(a);
-
-       M_ASN1_I2D_len(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_len(a->issuer_and_serial,i2d_PKCS7_ISSUER_AND_SERIAL);
-       M_ASN1_I2D_len(a->key_enc_algor,i2d_X509_ALGOR);
-       M_ASN1_I2D_len(a->enc_key,i2d_ASN1_OCTET_STRING);
-
-       M_ASN1_I2D_seq_total();
-
-       M_ASN1_I2D_put(a->version,i2d_ASN1_INTEGER);
-       M_ASN1_I2D_put(a->issuer_and_serial,i2d_PKCS7_ISSUER_AND_SERIAL);
-       M_ASN1_I2D_put(a->key_enc_algor,i2d_X509_ALGOR);
-       M_ASN1_I2D_put(a->enc_key,i2d_ASN1_OCTET_STRING);
-
-       M_ASN1_I2D_finish();
-       }
-
-PKCS7_RECIP_INFO *d2i_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO **a,
-            unsigned char **pp, long length)
-       {
-       M_ASN1_D2I_vars(a,PKCS7_RECIP_INFO *,PKCS7_RECIP_INFO_new);
-
-       M_ASN1_D2I_Init();
-       M_ASN1_D2I_start_sequence();
-       M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER);
-       M_ASN1_D2I_get(ret->issuer_and_serial,d2i_PKCS7_ISSUER_AND_SERIAL);
-       M_ASN1_D2I_get(ret->key_enc_algor,d2i_X509_ALGOR);
-       M_ASN1_D2I_get(ret->enc_key,d2i_ASN1_OCTET_STRING);
-
-       M_ASN1_D2I_Finish(a,PKCS7_RECIP_INFO_free,ASN1_F_D2I_PKCS7_RECIP_INFO);
-       }
-
-PKCS7_RECIP_INFO *PKCS7_RECIP_INFO_new(void)
-       {
-       PKCS7_RECIP_INFO *ret=NULL;
-       ASN1_CTX c;
-
-       M_ASN1_New_Malloc(ret,PKCS7_RECIP_INFO);
-       M_ASN1_New(ret->version,M_ASN1_INTEGER_new);
-       M_ASN1_New(ret->issuer_and_serial,PKCS7_ISSUER_AND_SERIAL_new);
-       M_ASN1_New(ret->key_enc_algor,X509_ALGOR_new);
-       M_ASN1_New(ret->enc_key,M_ASN1_OCTET_STRING_new);
-       ret->cert=NULL;
-       return(ret);
-       M_ASN1_New_Error(ASN1_F_PKCS7_RECIP_INFO_NEW);
-       }
-
-void PKCS7_RECIP_INFO_free(PKCS7_RECIP_INFO *a)
-       {
-       if (a == NULL) return;
-       M_ASN1_INTEGER_free(a->version);
-       PKCS7_ISSUER_AND_SERIAL_free(a->issuer_and_serial);
-       X509_ALGOR_free(a->key_enc_algor);
-       M_ASN1_OCTET_STRING_free(a->enc_key);
-       if (a->cert != NULL) X509_free(a->cert);
-       OPENSSL_free(a);
-       }
-
-IMPLEMENT_STACK_OF(PKCS7_RECIP_INFO)
-IMPLEMENT_ASN1_SET_OF(PKCS7_RECIP_INFO)
diff --git a/crypto/asn1/p7_s_e.c b/crypto/asn1/p7_s_e.c
deleted file mode 100644 (file)
index 709eb24..0000000
+++ /dev/null
@@ -1,145 +0,0 @@