Add type-safe STACKs and SETs.
diff --git a/CHANGES b/CHANGES
index d1cc3cf..5bbf146 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,16 @@
 
  Changes between 0.9.2b and 0.9.3
 
+  *) Introduce type-safe ASN.1 SETs.
+     [Ben Laurie]
+
+  *) Introduce type-safe STACKs. This will almost certainly break lots of code
+     that links with OpenSSL (well at least cause lots of warnings), but fear
+     not: the conversion is trivial, and it eliminates loads of evil casts. A
+     few STACKed things have been converted already. Feel free to convert more.
+     In the fullness of time, I'll do away with the STACK type altogether.
+     [Ben Laurie]
+
   *) Add `openssl ca -revoke <certfile>' facility which revokes a certificate
      specified in <certfile> by updating the entry in the index.txt file.
      This way one no longer has to edit the index.txt file manually for
diff --git a/apps/Makefile.ssl b/apps/Makefile.ssl
index e9c22d1..b3852e1 100644
--- a/apps/Makefile.ssl
+++ b/apps/Makefile.ssl
@@ -149,8 +149,8 @@
 asn1pars.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 asn1pars.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
 asn1pars.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-asn1pars.o: ../include/sha.h ../include/stack.h ../include/x509.h
-asn1pars.o: ../include/x509_vfy.h apps.h progs.h
+asn1pars.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+asn1pars.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
 ca.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h ../include/bn.h
 ca.o: ../include/buffer.h ../include/cast.h ../include/conf.h
 ca.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -158,9 +158,10 @@
 ca.o: ../include/lhash.h ../include/md2.h ../include/md5.h ../include/mdc2.h
 ca.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 ca.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
-ca.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h ../include/sha.h
-ca.o: ../include/stack.h ../include/txt_db.h ../include/x509.h
-ca.o: ../include/x509_vfy.h ../include/x509v3.h apps.h progs.h
+ca.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
+ca.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+ca.o: ../include/txt_db.h ../include/x509.h ../include/x509_vfy.h
+ca.o: ../include/x509v3.h apps.h progs.h
 ciphers.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ciphers.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ciphers.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -169,10 +170,10 @@
 ciphers.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 ciphers.o: ../include/opensslv.h ../include/pkcs7.h ../include/rc2.h
 ciphers.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-ciphers.o: ../include/rsa.h ../include/sha.h ../include/ssl.h ../include/ssl2.h
-ciphers.o: ../include/ssl23.h ../include/ssl3.h ../include/stack.h
-ciphers.o: ../include/tls1.h ../include/x509.h ../include/x509_vfy.h apps.h
-ciphers.o: progs.h
+ciphers.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+ciphers.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
+ciphers.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
+ciphers.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
 crl.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h ../include/bn.h
 crl.o: ../include/buffer.h ../include/cast.h ../include/crypto.h
 crl.o: ../include/des.h ../include/dh.h ../include/dsa.h ../include/e_os.h
@@ -180,9 +181,9 @@
 crl.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 crl.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 crl.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-crl.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h ../include/stack.h
-crl.o: ../include/x509.h ../include/x509_vfy.h ../include/x509v3.h apps.h
-crl.o: progs.h
+crl.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+crl.o: ../include/sha.h ../include/stack.h ../include/x509.h
+crl.o: ../include/x509_vfy.h ../include/x509v3.h apps.h progs.h
 crl2p7.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 crl2p7.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 crl2p7.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -191,8 +192,9 @@
 crl2p7.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 crl2p7.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h
 crl2p7.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-crl2p7.o: ../include/rsa.h ../include/sha.h ../include/stack.h
-crl2p7.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+crl2p7.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+crl2p7.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
+crl2p7.o: progs.h
 dgst.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 dgst.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 dgst.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -200,9 +202,9 @@
 dgst.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 dgst.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 dgst.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
-dgst.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h ../include/sha.h
-dgst.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
-dgst.o: progs.h
+dgst.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
+dgst.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+dgst.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
 dh.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h ../include/bn.h
 dh.o: ../include/buffer.h ../include/cast.h ../include/crypto.h
 dh.o: ../include/des.h ../include/dh.h ../include/dsa.h ../include/e_os.h
@@ -210,8 +212,9 @@
 dh.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 dh.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 dh.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-dh.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h ../include/stack.h
-dh.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+dh.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+dh.o: ../include/sha.h ../include/stack.h ../include/x509.h
+dh.o: ../include/x509_vfy.h apps.h progs.h
 dsa.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h ../include/bn.h
 dsa.o: ../include/buffer.h ../include/cast.h ../include/crypto.h
 dsa.o: ../include/des.h ../include/dh.h ../include/dsa.h ../include/e_os.h
@@ -219,8 +222,9 @@
 dsa.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 dsa.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 dsa.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-dsa.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h ../include/stack.h
-dsa.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+dsa.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+dsa.o: ../include/sha.h ../include/stack.h ../include/x509.h
+dsa.o: ../include/x509_vfy.h apps.h progs.h
 dsaparam.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 dsaparam.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 dsaparam.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -230,8 +234,9 @@
 dsaparam.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 dsaparam.o: ../include/pkcs7.h ../include/rand.h ../include/rc2.h
 dsaparam.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-dsaparam.o: ../include/rsa.h ../include/sha.h ../include/stack.h
-dsaparam.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+dsaparam.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+dsaparam.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
+dsaparam.o: progs.h
 enc.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h ../include/bn.h
 enc.o: ../include/buffer.h ../include/cast.h ../include/crypto.h
 enc.o: ../include/des.h ../include/dh.h ../include/dsa.h ../include/e_os.h
@@ -239,8 +244,9 @@
 enc.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 enc.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 enc.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-enc.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h ../include/stack.h
-enc.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+enc.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+enc.o: ../include/sha.h ../include/stack.h ../include/x509.h
+enc.o: ../include/x509_vfy.h apps.h progs.h
 errstr.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 errstr.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 errstr.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -248,10 +254,11 @@
 errstr.o: ../include/lhash.h ../include/md2.h ../include/md5.h
 errstr.o: ../include/mdc2.h ../include/objects.h ../include/opensslv.h
 errstr.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-errstr.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-errstr.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
-errstr.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
-errstr.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+errstr.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+errstr.o: ../include/sha.h ../include/ssl.h ../include/ssl2.h
+errstr.o: ../include/ssl23.h ../include/ssl3.h ../include/stack.h
+errstr.o: ../include/tls1.h ../include/x509.h ../include/x509_vfy.h apps.h
+errstr.o: progs.h
 gendh.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 gendh.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 gendh.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -260,8 +267,9 @@
 gendh.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 gendh.o: ../include/pem2.h ../include/pkcs7.h ../include/rand.h
 gendh.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-gendh.o: ../include/rsa.h ../include/sha.h ../include/stack.h ../include/x509.h
-gendh.o: ../include/x509_vfy.h apps.h progs.h
+gendh.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+gendh.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
+gendh.o: progs.h
 gendsa.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 gendsa.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 gendsa.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -270,9 +278,9 @@
 gendsa.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 gendsa.o: ../include/pem2.h ../include/pkcs7.h ../include/rand.h
 gendsa.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-gendsa.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-gendsa.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
-gendsa.o: progs.h
+gendsa.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+gendsa.o: ../include/sha.h ../include/stack.h ../include/x509.h
+gendsa.o: ../include/x509_vfy.h apps.h progs.h
 genrsa.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 genrsa.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 genrsa.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -281,9 +289,9 @@
 genrsa.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 genrsa.o: ../include/pem2.h ../include/pkcs7.h ../include/rand.h
 genrsa.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-genrsa.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-genrsa.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
-genrsa.o: progs.h
+genrsa.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+genrsa.o: ../include/sha.h ../include/stack.h ../include/x509.h
+genrsa.o: ../include/x509_vfy.h apps.h progs.h
 nseq.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 nseq.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 nseq.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -291,9 +299,9 @@
 nseq.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 nseq.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 nseq.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
-nseq.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h ../include/sha.h
-nseq.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
-nseq.o: progs.h
+nseq.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
+nseq.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+nseq.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
 openssl.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 openssl.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 openssl.o: ../include/conf.h ../include/crypto.h ../include/des.h
@@ -303,10 +311,10 @@
 openssl.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 openssl.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h
 openssl.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-openssl.o: ../include/rsa.h ../include/sha.h ../include/ssl.h ../include/ssl2.h
-openssl.o: ../include/ssl23.h ../include/ssl3.h ../include/stack.h
-openssl.o: ../include/tls1.h ../include/x509.h ../include/x509_vfy.h apps.h
-openssl.o: progs.h s_apps.h
+openssl.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+openssl.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
+openssl.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
+openssl.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h s_apps.h
 pkcs7.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 pkcs7.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 pkcs7.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -314,9 +322,9 @@
 pkcs7.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 pkcs7.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 pkcs7.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
-pkcs7.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h ../include/sha.h
-pkcs7.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
-pkcs7.o: progs.h
+pkcs7.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
+pkcs7.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+pkcs7.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
 req.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h ../include/bn.h
 req.o: ../include/buffer.h ../include/cast.h ../include/conf.h
 req.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -325,8 +333,9 @@
 req.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 req.o: ../include/pem2.h ../include/pkcs7.h ../include/rand.h ../include/rc2.h
 req.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-req.o: ../include/sha.h ../include/stack.h ../include/x509.h
-req.o: ../include/x509_vfy.h ../include/x509v3.h apps.h progs.h
+req.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+req.o: ../include/x509.h ../include/x509_vfy.h ../include/x509v3.h apps.h
+req.o: progs.h
 rsa.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h ../include/bn.h
 rsa.o: ../include/buffer.h ../include/cast.h ../include/crypto.h
 rsa.o: ../include/des.h ../include/dh.h ../include/dsa.h ../include/e_os.h
@@ -334,8 +343,9 @@
 rsa.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 rsa.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 rsa.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-rsa.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h ../include/stack.h
-rsa.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+rsa.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+rsa.o: ../include/sha.h ../include/stack.h ../include/x509.h
+rsa.o: ../include/x509_vfy.h apps.h progs.h
 s_cb.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s_cb.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s_cb.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -343,10 +353,10 @@
 s_cb.o: ../include/lhash.h ../include/md2.h ../include/md5.h ../include/mdc2.h
 s_cb.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s_cb.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-s_cb.o: ../include/rsa.h ../include/sha.h ../include/ssl.h ../include/ssl2.h
-s_cb.o: ../include/ssl23.h ../include/ssl3.h ../include/stack.h
-s_cb.o: ../include/tls1.h ../include/x509.h ../include/x509_vfy.h apps.h
-s_cb.o: progs.h s_apps.h
+s_cb.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+s_cb.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h ../include/ssl3.h
+s_cb.o: ../include/stack.h ../include/tls1.h ../include/x509.h
+s_cb.o: ../include/x509_vfy.h apps.h progs.h s_apps.h
 s_client.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s_client.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s_client.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -356,10 +366,10 @@
 s_client.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 s_client.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h
 s_client.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-s_client.o: ../include/rsa.h ../include/sha.h ../include/ssl.h
-s_client.o: ../include/ssl2.h ../include/ssl23.h ../include/ssl3.h
-s_client.o: ../include/stack.h ../include/tls1.h ../include/x509.h
-s_client.o: ../include/x509_vfy.h apps.h progs.h s_apps.h
+s_client.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+s_client.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
+s_client.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
+s_client.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h s_apps.h
 s_server.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s_server.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s_server.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -369,10 +379,10 @@
 s_server.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 s_server.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h
 s_server.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-s_server.o: ../include/rsa.h ../include/sha.h ../include/ssl.h
-s_server.o: ../include/ssl2.h ../include/ssl23.h ../include/ssl3.h
-s_server.o: ../include/stack.h ../include/tls1.h ../include/x509.h
-s_server.o: ../include/x509_vfy.h apps.h progs.h s_apps.h
+s_server.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+s_server.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
+s_server.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
+s_server.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h s_apps.h
 s_socket.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s_socket.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s_socket.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -381,10 +391,10 @@
 s_socket.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 s_socket.o: ../include/opensslv.h ../include/pkcs7.h ../include/rc2.h
 s_socket.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-s_socket.o: ../include/rsa.h ../include/sha.h ../include/ssl.h
-s_socket.o: ../include/ssl2.h ../include/ssl23.h ../include/ssl3.h
-s_socket.o: ../include/stack.h ../include/tls1.h ../include/x509.h
-s_socket.o: ../include/x509_vfy.h apps.h progs.h s_apps.h
+s_socket.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+s_socket.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
+s_socket.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
+s_socket.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h s_apps.h
 s_time.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s_time.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s_time.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -393,10 +403,11 @@
 s_time.o: ../include/mdc2.h ../include/objects.h ../include/opensslv.h
 s_time.o: ../include/pem.h ../include/pem2.h ../include/pkcs7.h
 s_time.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s_time.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s_time.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
-s_time.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
-s_time.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h s_apps.h
+s_time.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s_time.o: ../include/sha.h ../include/ssl.h ../include/ssl2.h
+s_time.o: ../include/ssl23.h ../include/ssl3.h ../include/stack.h
+s_time.o: ../include/tls1.h ../include/x509.h ../include/x509_vfy.h apps.h
+s_time.o: progs.h s_apps.h
 sess_id.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 sess_id.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 sess_id.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -406,10 +417,10 @@
 sess_id.o: ../include/opensslv.h ../include/pem.h ../include/pem2.h
 sess_id.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
 sess_id.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-sess_id.o: ../include/sha.h ../include/ssl.h ../include/ssl2.h
-sess_id.o: ../include/ssl23.h ../include/ssl3.h ../include/stack.h
-sess_id.o: ../include/tls1.h ../include/x509.h ../include/x509_vfy.h apps.h
-sess_id.o: progs.h
+sess_id.o: ../include/safestack.h ../include/sha.h ../include/ssl.h
+sess_id.o: ../include/ssl2.h ../include/ssl23.h ../include/ssl3.h
+sess_id.o: ../include/stack.h ../include/tls1.h ../include/x509.h
+sess_id.o: ../include/x509_vfy.h apps.h progs.h
 speed.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 speed.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 speed.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -417,9 +428,9 @@
 speed.o: ../include/idea.h ../include/md2.h ../include/md5.h ../include/mdc2.h
 speed.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 speed.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-speed.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-speed.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ./testdsa.h
-speed.o: ./testrsa.h apps.h progs.h
+speed.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+speed.o: ../include/sha.h ../include/stack.h ../include/x509.h
+speed.o: ../include/x509_vfy.h ./testdsa.h ./testrsa.h apps.h progs.h
 verify.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 verify.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 verify.o: ../include/crypto.h ../include/des.h ../include/dh.h ../include/dsa.h
@@ -428,8 +439,9 @@
 verify.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 verify.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h
 verify.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-verify.o: ../include/rsa.h ../include/sha.h ../include/stack.h
-verify.o: ../include/x509.h ../include/x509_vfy.h apps.h progs.h
+verify.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+verify.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h apps.h
+verify.o: progs.h
 version.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 version.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 version.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -446,6 +458,7 @@
 x509.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 x509.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 x509.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
-x509.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h ../include/sha.h
-x509.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h
-x509.o: ../include/x509v3.h apps.h progs.h
+x509.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
+x509.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+x509.o: ../include/x509.h ../include/x509_vfy.h ../include/x509v3.h apps.h
+x509.o: progs.h
diff --git a/apps/ciphers.c b/apps/ciphers.c
index 867196e..a62c5b0 100644
--- a/apps/ciphers.c
+++ b/apps/ciphers.c
@@ -89,7 +89,7 @@
 	SSL *ssl=NULL;
 	char *ciphers=NULL;
 	SSL_METHOD *meth=NULL;
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 	char buf[512];
 	BIO *STDout=NULL;
 
@@ -167,10 +167,10 @@
 		{
 		sk=SSL_get_ciphers(ssl);
 
-		for (i=0; i<sk_num(sk); i++)
+		for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
 			{
 			BIO_puts(STDout,SSL_CIPHER_description(
-				(SSL_CIPHER *)sk_value(sk,i),
+				sk_SSL_CIPHER_value(sk,i),
 				buf,512));
 			}
 		}
diff --git a/apps/crl2p7.c b/apps/crl2p7.c
index befae04..beadc96 100644
--- a/apps/crl2p7.c
+++ b/apps/crl2p7.c
@@ -73,7 +73,7 @@
 #include "objects.h"
 
 #ifndef NOPROTO
-static int add_certs_from_file(STACK *stack, char *certfile);
+static int add_certs_from_file(STACK_OF(X509) *stack, char *certfile);
 #else
 static int add_certs_from_file();
 #endif
@@ -100,7 +100,7 @@
 	X509_CRL *crl=NULL;
 	STACK *certflst=NULL;
 	STACK *crl_stack=NULL;
-	STACK *cert_stack=NULL;
+	STACK_OF(X509) *cert_stack=NULL;
 	int ret=1,nocrl=0;
 
 	apps_startup();
@@ -228,7 +228,7 @@
 		crl=NULL; /* now part of p7 for Freeing */
 		}
 
-	if ((cert_stack=sk_new(NULL)) == NULL) goto end;
+	if ((cert_stack=sk_X509_new(NULL)) == NULL) goto end;
 	p7s->cert=cert_stack;
 
 	if(certflst) for(i = 0; i < sk_num(certflst); i++) {
@@ -289,7 +289,7 @@
  *----------------------------------------------------------------------
  */
 static int add_certs_from_file(stack,certfile)
-STACK *stack;
+STACK_OF(X509) *stack;
 char *certfile;
 	{
 	struct stat st;
@@ -325,7 +325,7 @@
 		xi=(X509_INFO *)sk_shift(sk);
 		if (xi->x509 != NULL)
 			{
-			sk_push(stack,(char *)xi->x509);
+			sk_X509_push(stack,xi->x509);
 			xi->x509=NULL;
 			count++;
 			}
diff --git a/apps/pkcs7.c b/apps/pkcs7.c
index 9f96edc..cac75f4 100644
--- a/apps/pkcs7.c
+++ b/apps/pkcs7.c
@@ -223,7 +223,7 @@
 
 	if (print_certs)
 		{
-		STACK *certs=NULL;
+		STACK_OF(X509) *certs=NULL;
 		STACK *crls=NULL;
 
 		i=OBJ_obj2nid(p7->type);
@@ -245,9 +245,9 @@
 			{
 			X509 *x;
 
-			for (i=0; i<sk_num(certs); i++)
+			for (i=0; i<sk_X509_num(certs); i++)
 				{
-				x=(X509 *)sk_value(certs,i);
+				x=sk_X509_value(certs,i);
 
 				X509_NAME_oneline(X509_get_subject_name(x),
 					buf,256);
diff --git a/apps/s_client.c b/apps/s_client.c
index c6b7938..7140f8b 100644
--- a/apps/s_client.c
+++ b/apps/s_client.c
@@ -666,7 +666,8 @@
 	char *p;
 	static char *space="                ";
 	char buf[BUFSIZ];
-	STACK *sk;
+	STACK_OF(X509) *sk;
+	STACK_OF(X509_NAME) *sk2;
 	SSL_CIPHER *c;
 	X509_NAME *xn;
 	int j,i;
@@ -677,16 +678,16 @@
 		if (sk != NULL)
 			{
 			BIO_printf(bio,"---\nCertificate chain\n");
-			for (i=0; i<sk_num(sk); i++)
+			for (i=0; i<sk_X509_num(sk); i++)
 				{
-				X509_NAME_oneline(X509_get_subject_name((X509 *)
-					sk_value(sk,i)),buf,BUFSIZ);
+				X509_NAME_oneline(X509_get_subject_name(
+					sk_X509_value(sk,i)),buf,BUFSIZ);
 				BIO_printf(bio,"%2d s:%s\n",i,buf);
-				X509_NAME_oneline(X509_get_issuer_name((X509 *)
-					sk_value(sk,i)),buf,BUFSIZ);
+				X509_NAME_oneline(X509_get_issuer_name(
+					sk_X509_value(sk,i)),buf,BUFSIZ);
 				BIO_printf(bio,"   i:%s\n",buf);
 				if (c_showcerts)
-					PEM_write_bio_X509(bio,(X509 *) sk_value(sk,i));
+					PEM_write_bio_X509(bio,sk_X509_value(sk,i));
 				}
 			}
 
@@ -707,13 +708,13 @@
 		else
 			BIO_printf(bio,"no peer certificate available\n");
 
-		sk=SSL_get_client_CA_list(s);
-		if ((sk != NULL) && (sk_num(sk) > 0))
+		sk2=SSL_get_client_CA_list(s);
+		if ((sk != NULL) && (sk_X509_NAME_num(sk2) > 0))
 			{
 			BIO_printf(bio,"---\nAcceptable client certificate CA names\n");
-			for (i=0; i<sk_num(sk); i++)
+			for (i=0; i<sk_X509_NAME_num(sk2); i++)
 				{
-				xn=(X509_NAME *)sk_value(sk,i);
+				xn=sk_X509_NAME_value(sk2,i);
 				X509_NAME_oneline(xn,buf,sizeof(buf));
 				BIO_write(bio,buf,strlen(buf));
 				BIO_write(bio,"\n",1);
diff --git a/apps/s_server.c b/apps/s_server.c
index 7d9df46..de0c712 100644
--- a/apps/s_server.c
+++ b/apps/s_server.c
@@ -998,7 +998,7 @@
 			{
 			char *p;
 			X509 *peer;
-			STACK *sk;
+			STACK_OF(SSL_CIPHER) *sk;
 			static char *space="                          ";
 
 			BIO_puts(io,"HTTP/1.0 200 ok\r\nContent-type: text/html\r\n\r\n");
@@ -1017,10 +1017,10 @@
 			 * be done */
 			BIO_printf(io,"Ciphers supported in s_server binary\n");
 			sk=SSL_get_ciphers(con);
-			j=sk_num(sk);
+			j=sk_SSL_CIPHER_num(sk);
 			for (i=0; i<j; i++)
 				{
-				c=(SSL_CIPHER *)sk_value(sk,i);
+				c=sk_SSL_CIPHER_value(sk,i);
 				BIO_printf(io,"%-11s:%-25s",
 					SSL_CIPHER_get_version(c),
 					SSL_CIPHER_get_name(c));
diff --git a/crypto/asn1/Makefile.ssl b/crypto/asn1/Makefile.ssl
index 5bf3315..4dbf8ca 100644
--- a/crypto/asn1/Makefile.ssl
+++ b/crypto/asn1/Makefile.ssl
@@ -136,9 +136,9 @@
 a_bytes.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_bytes.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_bytes.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_bytes.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_bytes.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_bytes.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+a_bytes.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_bytes.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_bytes.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 a_d2i_fp.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 a_d2i_fp.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 a_d2i_fp.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -146,9 +146,9 @@
 a_d2i_fp.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_d2i_fp.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_d2i_fp.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_d2i_fp.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_d2i_fp.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_d2i_fp.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+a_d2i_fp.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_d2i_fp.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_d2i_fp.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 a_digest.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 a_digest.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 a_digest.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -156,9 +156,9 @@
 a_digest.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_digest.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_digest.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_digest.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_digest.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_digest.o: ../crypto.h ../opensslv.h asn1.h
+a_digest.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_digest.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_digest.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 a_dup.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 a_dup.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 a_dup.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -166,9 +166,9 @@
 a_dup.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_dup.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_dup.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_dup.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_dup.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_dup.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+a_dup.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_dup.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_dup.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 a_enum.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 a_enum.o: ../../include/e_os.h ../../include/err.h ../../include/stack.h
 a_enum.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
@@ -182,9 +182,9 @@
 a_hdr.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_hdr.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_hdr.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_hdr.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_hdr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_hdr.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+a_hdr.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_hdr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_hdr.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 a_i2d_fp.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 a_i2d_fp.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 a_i2d_fp.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -192,9 +192,9 @@
 a_i2d_fp.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_i2d_fp.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_i2d_fp.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_i2d_fp.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_i2d_fp.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_i2d_fp.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+a_i2d_fp.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_i2d_fp.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_i2d_fp.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 a_int.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 a_int.o: ../../include/e_os.h ../../include/err.h ../../include/stack.h
 a_int.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
@@ -205,9 +205,9 @@
 a_meth.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_meth.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_meth.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_meth.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_meth.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_meth.o: ../crypto.h ../opensslv.h asn1.h
+a_meth.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_meth.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_meth.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 a_object.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 a_object.o: ../../include/e_os.h ../../include/err.h ../../include/objects.h
 a_object.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
@@ -225,9 +225,9 @@
 a_set.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_set.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_set.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_set.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_set.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_set.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+a_set.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_set.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_set.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 a_sign.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 a_sign.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 a_sign.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -235,9 +235,9 @@
 a_sign.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_sign.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_sign.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_sign.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_sign.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_sign.o: ../crypto.h ../opensslv.h asn1.h
+a_sign.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_sign.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_sign.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 a_time.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 a_time.o: ../../include/e_os.h ../../include/err.h ../../include/stack.h
 a_time.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
@@ -248,9 +248,9 @@
 a_type.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_type.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_type.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_type.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_type.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_type.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+a_type.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_type.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_type.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 a_utctm.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 a_utctm.o: ../../include/e_os.h ../../include/err.h ../../include/stack.h
 a_utctm.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
@@ -261,9 +261,9 @@
 a_verify.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 a_verify.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 a_verify.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-a_verify.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-a_verify.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-a_verify.o: ../crypto.h ../opensslv.h asn1.h
+a_verify.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+a_verify.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+a_verify.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 asn1_err.o: ../../include/bn.h ../../include/err.h ../../include/stack.h asn1.h
 asn1_lib.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 asn1_lib.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
@@ -272,9 +272,9 @@
 asn1_lib.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 asn1_lib.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 asn1_lib.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-asn1_lib.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-asn1_lib.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-asn1_lib.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+asn1_lib.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+asn1_lib.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+asn1_lib.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 asn1_par.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 asn1_par.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 asn1_par.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -282,9 +282,9 @@
 asn1_par.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 asn1_par.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 asn1_par.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-asn1_par.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-asn1_par.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-asn1_par.o: ../crypto.h ../opensslv.h asn1.h
+asn1_par.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+asn1_par.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+asn1_par.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 asn_pack.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 asn_pack.o: ../../include/e_os.h ../../include/err.h ../../include/stack.h
 asn_pack.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
@@ -295,9 +295,9 @@
 d2i_dhp.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_dhp.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_dhp.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_dhp.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_dhp.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_dhp.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+d2i_dhp.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_dhp.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_dhp.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 d2i_dsap.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 d2i_dsap.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 d2i_dsap.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -305,9 +305,9 @@
 d2i_dsap.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_dsap.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_dsap.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_dsap.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_dsap.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_dsap.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+d2i_dsap.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_dsap.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_dsap.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 d2i_pr.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 d2i_pr.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 d2i_pr.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -315,9 +315,9 @@
 d2i_pr.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_pr.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_pr.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_pr.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_pr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_pr.o: ../crypto.h ../opensslv.h asn1.h
+d2i_pr.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_pr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_pr.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 d2i_pu.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 d2i_pu.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 d2i_pu.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -325,9 +325,9 @@
 d2i_pu.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_pu.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_pu.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_pu.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_pu.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_pu.o: ../crypto.h ../opensslv.h asn1.h
+d2i_pu.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_pu.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_pu.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 d2i_r_pr.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 d2i_r_pr.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 d2i_r_pr.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -335,9 +335,9 @@
 d2i_r_pr.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_r_pr.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_r_pr.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_r_pr.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_r_pr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_r_pr.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+d2i_r_pr.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_r_pr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_r_pr.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 d2i_r_pu.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 d2i_r_pu.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 d2i_r_pu.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -345,9 +345,9 @@
 d2i_r_pu.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_r_pu.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_r_pu.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_r_pu.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_r_pu.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_r_pu.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+d2i_r_pu.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_r_pu.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_r_pu.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 d2i_s_pr.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 d2i_s_pr.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 d2i_s_pr.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -355,9 +355,9 @@
 d2i_s_pr.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_s_pr.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_s_pr.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_s_pr.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_s_pr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_s_pr.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+d2i_s_pr.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_s_pr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_s_pr.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 d2i_s_pu.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 d2i_s_pu.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 d2i_s_pu.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -365,9 +365,9 @@
 d2i_s_pu.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 d2i_s_pu.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 d2i_s_pu.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-d2i_s_pu.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-d2i_s_pu.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-d2i_s_pu.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+d2i_s_pu.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+d2i_s_pu.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+d2i_s_pu.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 evp_asn1.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 evp_asn1.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 evp_asn1.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -375,9 +375,9 @@
 evp_asn1.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 evp_asn1.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 evp_asn1.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-evp_asn1.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-evp_asn1.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-evp_asn1.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+evp_asn1.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+evp_asn1.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+evp_asn1.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 f_enum.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 f_enum.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 f_enum.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -385,9 +385,9 @@
 f_enum.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 f_enum.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 f_enum.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-f_enum.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-f_enum.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-f_enum.o: ../crypto.h ../opensslv.h asn1.h
+f_enum.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+f_enum.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+f_enum.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 f_int.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 f_int.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 f_int.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -395,9 +395,9 @@
 f_int.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 f_int.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 f_int.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-f_int.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-f_int.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-f_int.o: ../crypto.h ../opensslv.h asn1.h
+f_int.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+f_int.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+f_int.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 f_string.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 f_string.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 f_string.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -405,9 +405,9 @@
 f_string.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 f_string.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 f_string.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-f_string.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-f_string.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-f_string.o: ../crypto.h ../opensslv.h asn1.h
+f_string.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+f_string.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+f_string.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 i2d_dhp.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 i2d_dhp.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 i2d_dhp.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -415,9 +415,9 @@
 i2d_dhp.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 i2d_dhp.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 i2d_dhp.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-i2d_dhp.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-i2d_dhp.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-i2d_dhp.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+i2d_dhp.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+i2d_dhp.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+i2d_dhp.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 i2d_dsap.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 i2d_dsap.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 i2d_dsap.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -425,9 +425,9 @@
 i2d_dsap.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 i2d_dsap.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 i2d_dsap.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-i2d_dsap.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-i2d_dsap.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-i2d_dsap.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+i2d_dsap.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+i2d_dsap.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+i2d_dsap.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 i2d_pr.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 i2d_pr.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 i2d_pr.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -453,9 +453,9 @@
 i2d_r_pr.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 i2d_r_pr.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 i2d_r_pr.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-i2d_r_pr.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-i2d_r_pr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-i2d_r_pr.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+i2d_r_pr.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+i2d_r_pr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+i2d_r_pr.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 i2d_r_pu.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 i2d_r_pu.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 i2d_r_pu.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -463,9 +463,9 @@
 i2d_r_pu.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 i2d_r_pu.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 i2d_r_pu.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-i2d_r_pu.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-i2d_r_pu.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-i2d_r_pu.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+i2d_r_pu.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+i2d_r_pu.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+i2d_r_pu.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 i2d_s_pr.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 i2d_s_pr.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 i2d_s_pr.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -473,9 +473,9 @@
 i2d_s_pr.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 i2d_s_pr.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 i2d_s_pr.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-i2d_s_pr.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-i2d_s_pr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-i2d_s_pr.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+i2d_s_pr.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+i2d_s_pr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+i2d_s_pr.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 i2d_s_pu.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 i2d_s_pu.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 i2d_s_pu.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -483,9 +483,9 @@
 i2d_s_pu.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 i2d_s_pu.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 i2d_s_pu.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-i2d_s_pu.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-i2d_s_pu.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-i2d_s_pu.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+i2d_s_pu.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+i2d_s_pu.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+i2d_s_pu.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 n_pkey.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 n_pkey.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 n_pkey.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -493,18 +493,18 @@
 n_pkey.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 n_pkey.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 n_pkey.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-n_pkey.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-n_pkey.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-n_pkey.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+n_pkey.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+n_pkey.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+n_pkey.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 nsseq.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 nsseq.o: ../../include/cast.h ../../include/des.h ../../include/dh.h
 nsseq.o: ../../include/dsa.h ../../include/err.h ../../include/evp.h
 nsseq.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 nsseq.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 nsseq.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-nsseq.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-nsseq.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-nsseq.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+nsseq.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+nsseq.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+nsseq.o: ../../include/x509_vfy.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p5_pbe.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p5_pbe.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p5_pbe.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -512,9 +512,21 @@
 p5_pbe.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p5_pbe.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rand.h
 p5_pbe.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p5_pbe.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p5_pbe.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p5_pbe.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p5_pbe.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p5_pbe.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p5_pbe.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+p5_pbe.o: asn1.h asn1_mac.h
+p5_pbev2.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
+p5_pbev2.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
+p5_pbev2.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
+p5_pbev2.o: ../../include/err.h ../../include/evp.h ../../include/idea.h
+p5_pbev2.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
+p5_pbev2.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rand.h
+p5_pbev2.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
+p5_pbev2.o: ../../include/ripemd.h ../../include/rsa.h
+p5_pbev2.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p5_pbev2.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p5_pbev2.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_dgst.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_dgst.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_dgst.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -522,9 +534,9 @@
 p7_dgst.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_dgst.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_dgst.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_dgst.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_dgst.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_dgst.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_dgst.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_dgst.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_dgst.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_enc.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_enc.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_enc.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -532,9 +544,9 @@
 p7_enc.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_enc.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_enc.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_enc.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_enc.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_enc.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_enc.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_enc.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_enc.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_enc_c.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_enc_c.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_enc_c.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -542,9 +554,9 @@
 p7_enc_c.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_enc_c.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_enc_c.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_enc_c.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_enc_c.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_enc_c.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_enc_c.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_enc_c.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_enc_c.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_evp.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_evp.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_evp.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -552,9 +564,9 @@
 p7_evp.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_evp.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_evp.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_evp.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_evp.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_evp.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_evp.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_evp.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_evp.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_i_s.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_i_s.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_i_s.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -562,9 +574,9 @@
 p7_i_s.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_i_s.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_i_s.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_i_s.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_i_s.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_i_s.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_i_s.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_i_s.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_i_s.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_lib.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_lib.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_lib.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -572,9 +584,9 @@
 p7_lib.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_lib.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_lib.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_lib.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_lib.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_lib.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_lib.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_lib.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_lib.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_recip.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_recip.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_recip.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -582,9 +594,9 @@
 p7_recip.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_recip.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_recip.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_recip.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_recip.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_recip.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_recip.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_recip.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_recip.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_s_e.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_s_e.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_s_e.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -592,9 +604,9 @@
 p7_s_e.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_s_e.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_s_e.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_s_e.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_s_e.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_s_e.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_s_e.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_s_e.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_s_e.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_signd.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_signd.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_signd.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -602,9 +614,9 @@
 p7_signd.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_signd.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_signd.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_signd.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_signd.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_signd.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_signd.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_signd.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_signd.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p7_signi.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p7_signi.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p7_signi.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -612,9 +624,9 @@
 p7_signi.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p7_signi.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p7_signi.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p7_signi.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p7_signi.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p7_signi.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p7_signi.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p7_signi.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p7_signi.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 p8_pkey.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 p8_pkey.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 p8_pkey.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -622,9 +634,9 @@
 p8_pkey.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p8_pkey.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p8_pkey.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p8_pkey.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p8_pkey.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p8_pkey.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+p8_pkey.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p8_pkey.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p8_pkey.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 t_crl.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 t_crl.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 t_crl.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -632,9 +644,9 @@
 t_crl.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 t_crl.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 t_crl.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-t_crl.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-t_crl.o: ../../include/x509.h ../../include/x509_vfy.h ../../include/x509v3.h
-t_crl.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
+t_crl.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+t_crl.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+t_crl.o: ../../include/x509v3.h ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 t_pkey.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 t_pkey.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
 t_pkey.o: ../../include/err.h ../../include/rsa.h ../../include/stack.h
@@ -646,9 +658,9 @@
 t_req.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 t_req.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 t_req.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-t_req.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-t_req.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-t_req.o: ../crypto.h ../opensslv.h asn1.h
+t_req.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+t_req.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+t_req.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 t_x509.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 t_x509.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 t_x509.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -656,9 +668,9 @@
 t_x509.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 t_x509.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 t_x509.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-t_x509.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-t_x509.o: ../../include/x509.h ../../include/x509_vfy.h ../../include/x509v3.h
-t_x509.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
+t_x509.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+t_x509.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+t_x509.o: ../../include/x509v3.h ../cryptlib.h ../crypto.h ../opensslv.h asn1.h
 x_algor.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_algor.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_algor.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -666,9 +678,9 @@
 x_algor.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_algor.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_algor.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_algor.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_algor.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_algor.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_algor.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_algor.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_algor.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_attrib.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_attrib.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_attrib.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -676,9 +688,9 @@
 x_attrib.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_attrib.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_attrib.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_attrib.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_attrib.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_attrib.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_attrib.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_attrib.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_attrib.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_cinf.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_cinf.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_cinf.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -686,9 +698,9 @@
 x_cinf.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_cinf.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_cinf.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_cinf.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_cinf.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_cinf.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_cinf.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_cinf.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_cinf.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_crl.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_crl.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_crl.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -696,9 +708,9 @@
 x_crl.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_crl.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_crl.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_crl.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_crl.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_crl.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_crl.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_crl.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_crl.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_exten.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_exten.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_exten.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -706,9 +718,9 @@
 x_exten.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_exten.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_exten.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_exten.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_exten.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_exten.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_exten.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_exten.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_exten.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_info.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_info.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_info.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -716,9 +728,9 @@
 x_info.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_info.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_info.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_info.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_info.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_info.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_info.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_info.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_info.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_name.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_name.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_name.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -726,9 +738,9 @@
 x_name.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_name.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_name.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_name.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_name.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_name.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_name.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_name.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_name.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_pkey.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_pkey.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_pkey.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -736,9 +748,9 @@
 x_pkey.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_pkey.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_pkey.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_pkey.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_pkey.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_pkey.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_pkey.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_pkey.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_pkey.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_pubkey.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_pubkey.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_pubkey.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -746,9 +758,9 @@
 x_pubkey.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_pubkey.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_pubkey.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_pubkey.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_pubkey.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_pubkey.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_pubkey.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_pubkey.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_pubkey.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_req.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_req.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_req.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -756,9 +768,9 @@
 x_req.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_req.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_req.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_req.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_req.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_req.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_req.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_req.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_req.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_sig.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_sig.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_sig.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -766,9 +778,9 @@
 x_sig.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_sig.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_sig.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_sig.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_sig.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_sig.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_sig.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_sig.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_sig.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_spki.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_spki.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_spki.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -776,9 +788,9 @@
 x_spki.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_spki.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_spki.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_spki.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_spki.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_spki.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_spki.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_spki.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_spki.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_val.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_val.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_val.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -786,9 +798,9 @@
 x_val.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_val.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_val.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_val.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_val.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_val.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_val.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_val.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_val.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
 x_x509.o: ../../include/bio.h ../../include/blowfish.h ../../include/bn.h
 x_x509.o: ../../include/buffer.h ../../include/cast.h ../../include/des.h
 x_x509.o: ../../include/dh.h ../../include/dsa.h ../../include/e_os.h
@@ -796,6 +808,6 @@
 x_x509.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 x_x509.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 x_x509.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x_x509.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x_x509.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-x_x509.o: ../crypto.h ../opensslv.h asn1.h asn1_mac.h
+x_x509.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x_x509.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+x_x509.o: ../cryptlib.h ../crypto.h ../opensslv.h asn1.h asn1_mac.h
diff --git a/crypto/asn1/asn1.h b/crypto/asn1/asn1.h
index e2280c2..c0002e9 100644
--- a/crypto/asn1/asn1.h
+++ b/crypto/asn1/asn1.h
@@ -485,6 +485,33 @@
 			char *(*func)(), void (*free_func)(),
 			int ex_tag, int ex_class);
 
+#define DECLARE_ASN1_SET_OF(type) \
+int i2d_ASN1_SET_OF_##type(STACK_OF(type) *a,unsigned char **pp, \
+			   int (*func)(type *,unsigned char **), int ex_tag, \
+			   int ex_class, int is_set); \
+STACK_OF(type) *d2i_ASN1_SET_OF_##type(STACK_OF(type) **a,unsigned char **pp, \
+				       long length, \
+				       type *(*func)(type **, \
+						     unsigned char **,long), \
+				       void (*free_func)(type *), \
+				       int ex_tag,int ex_class);
+
+#define IMPLEMENT_ASN1_SET_OF(type) \
+int i2d_ASN1_SET_OF_##type(STACK_OF(type) *a,unsigned char **pp, \
+			   int (*func)(type *,unsigned char **), int ex_tag, \
+			   int ex_class, int is_set) \
+    { return i2d_ASN1_SET((STACK *)a,pp,func,ex_tag,ex_class,is_set); } \
+STACK_OF(type) *d2i_ASN1_SET_OF_##type(STACK_OF(type) **a,unsigned char **pp, \
+				       long length, \
+				       type *(*func)(type **, \
+						     unsigned char **,long), \
+				       void (*free_func)(type *), \
+				       int ex_tag,int ex_class) \
+    { return (STACK_OF(type) *)d2i_ASN1_SET((STACK **)a,pp,length, \
+					    (char *(*)())func, \
+					    (void (*)())free_func, \
+					    ex_tag,ex_class); }
+
 #ifdef HEADER_BIO_H
 int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a);
 int a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size);
diff --git a/crypto/asn1/asn1_mac.h b/crypto/asn1/asn1_mac.h
index 41bf407..3aeedc1 100644
--- a/crypto/asn1/asn1_mac.h
+++ b/crypto/asn1/asn1_mac.h
@@ -180,6 +180,15 @@
 			tag,V_ASN1_CONTEXT_SPECIFIC); \
 		}
 
+#define M_ASN1_D2I_get_IMP_set_opt_type(type,b,func,free_func,tag) \
+	if ((c.slen != 0) && \
+		(M_ASN1_next == \
+		(V_ASN1_CONTEXT_SPECIFIC|V_ASN1_CONSTRUCTED|(tag))))\
+		{ \
+		M_ASN1_D2I_get_imp_set_type(type,b,func,free_func,\
+			tag,V_ASN1_CONTEXT_SPECIFIC); \
+		}
+
 #define M_ASN1_D2I_get_seq(r,func,free_func) \
 		M_ASN1_D2I_get_imp_set(r,func,free_func,\
 			V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
@@ -200,6 +209,13 @@
 		{ c.line=__LINE__; goto err; } \
 	c.slen-=(c.p-c.q);
 
+#define M_ASN1_D2I_get_imp_set_type(type,r,func,free_func,a,b) \
+	c.q=c.p; \
+	if (d2i_ASN1_SET_OF_##type(&(r),&c.p,c.slen,func,free_func,a,b) \
+	    == NULL) \
+		{ c.line=__LINE__; goto err; } \
+	c.slen-=(c.p-c.q);
+
 #define M_ASN1_D2I_get_set_strings(r,func,a,b) \
 	c.q=c.p; \
 	if (d2i_ASN1_STRING_SET(&(r),&c.p,c.slen,a,b) == NULL) \
@@ -314,6 +330,12 @@
 			ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC, \
 					  IS_SEQUENCE);
 
+#define M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(type,a,f,x) \
+		if ((a != NULL) && (sk_##type##_num(a) != 0)) \
+			ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,x, \
+						    V_ASN1_CONTEXT_SPECIFIC, \
+						    IS_SEQUENCE);
+
 #define M_ASN1_I2D_len_EXP_opt(a,f,mtag,v) \
 		if (a != NULL)\
 			{ \
@@ -371,6 +393,12 @@
 			{ i2d_ASN1_SET(a,&p,f,x,V_ASN1_CONTEXT_SPECIFIC, \
 				       IS_SEQUENCE); }
 
+#define M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(type,a,f,x) \
+		if ((a != NULL) && (sk_##type##_num(a) != 0)) \
+			{ i2d_ASN1_SET_OF_##type(a,&p,f,x, \
+						 V_ASN1_CONTEXT_SPECIFIC, \
+						 IS_SEQUENCE); }
+
 #define M_ASN1_I2D_put_EXP_opt(a,f,tag,v) \
 		if (a != NULL) \
 			{ \
diff --git a/crypto/asn1/p7_s_e.c b/crypto/asn1/p7_s_e.c
index 72f5b65..8271c8f 100644
--- a/crypto/asn1/p7_s_e.c
+++ b/crypto/asn1/p7_s_e.c
@@ -76,7 +76,7 @@
 	M_ASN1_I2D_len_SET(a->recipientinfo,i2d_PKCS7_RECIP_INFO);
 	M_ASN1_I2D_len_SET(a->md_algs,i2d_X509_ALGOR);
 	M_ASN1_I2D_len(a->enc_data,i2d_PKCS7_ENC_CONTENT);
-	M_ASN1_I2D_len_IMP_SEQUENCE_opt(a->cert,i2d_X509,0);
+	M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0);
 	M_ASN1_I2D_len_IMP_SET_opt(a->crl,i2d_X509_CRL,1);
 	M_ASN1_I2D_len_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
 
@@ -86,7 +86,7 @@
 	M_ASN1_I2D_put_SET(a->recipientinfo,i2d_PKCS7_RECIP_INFO);
 	M_ASN1_I2D_put_SET(a->md_algs,i2d_X509_ALGOR);
 	M_ASN1_I2D_put(a->enc_data,i2d_PKCS7_ENC_CONTENT);
-	M_ASN1_I2D_put_IMP_SEQUENCE_opt(a->cert,i2d_X509,0);
+	M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0);
 	M_ASN1_I2D_put_IMP_SET_opt(a->crl,i2d_X509_CRL,1);
 	M_ASN1_I2D_put_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
 
@@ -107,7 +107,7 @@
 		PKCS7_RECIP_INFO_free);
 	M_ASN1_D2I_get_set(ret->md_algs,d2i_X509_ALGOR,X509_ALGOR_free);
 	M_ASN1_D2I_get(ret->enc_data,d2i_PKCS7_ENC_CONTENT);
-	M_ASN1_D2I_get_IMP_set_opt(ret->cert,d2i_X509,X509_free,0);
+	M_ASN1_D2I_get_IMP_set_opt_type(X509,ret->cert,d2i_X509,X509_free,0);
 	M_ASN1_D2I_get_IMP_set_opt(ret->crl,d2i_X509_CRL,X509_CRL_free,1);
 	M_ASN1_D2I_get_set(ret->signer_info,d2i_PKCS7_SIGNER_INFO,
 		PKCS7_SIGNER_INFO_free);
@@ -141,7 +141,7 @@
 	sk_pop_free(a->recipientinfo,PKCS7_RECIP_INFO_free);
 	sk_pop_free(a->md_algs,X509_ALGOR_free);
 	PKCS7_ENC_CONTENT_free(a->enc_data);
-	sk_pop_free(a->cert,X509_free);
+	sk_X509_pop_free(a->cert,X509_free);
 	sk_pop_free(a->crl,X509_CRL_free);
 	sk_pop_free(a->signer_info,PKCS7_SIGNER_INFO_free);
 	Free((char *)a);
diff --git a/crypto/asn1/p7_signd.c b/crypto/asn1/p7_signd.c
index cefa92a..f4d03f8 100644
--- a/crypto/asn1/p7_signd.c
+++ b/crypto/asn1/p7_signd.c
@@ -75,7 +75,7 @@
 	M_ASN1_I2D_len(a->version,i2d_ASN1_INTEGER);
 	M_ASN1_I2D_len_SET(a->md_algs,i2d_X509_ALGOR);
 	M_ASN1_I2D_len(a->contents,i2d_PKCS7);
-	M_ASN1_I2D_len_IMP_SEQUENCE_opt(a->cert,i2d_X509,0);
+	M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0);
 	M_ASN1_I2D_len_IMP_SET_opt(a->crl,i2d_X509_CRL,1);
 	M_ASN1_I2D_len_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
 
@@ -84,7 +84,7 @@
 	M_ASN1_I2D_put(a->version,i2d_ASN1_INTEGER);
 	M_ASN1_I2D_put_SET(a->md_algs,i2d_X509_ALGOR);
 	M_ASN1_I2D_put(a->contents,i2d_PKCS7);
-	M_ASN1_I2D_put_IMP_SEQUENCE_opt(a->cert,i2d_X509,0);
+	M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0);
 	M_ASN1_I2D_put_IMP_SET_opt(a->crl,i2d_X509_CRL,1);
 	M_ASN1_I2D_put_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
 
@@ -103,7 +103,7 @@
 	M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER);
 	M_ASN1_D2I_get_set(ret->md_algs,d2i_X509_ALGOR,X509_ALGOR_free);
 	M_ASN1_D2I_get(ret->contents,d2i_PKCS7);
-	M_ASN1_D2I_get_IMP_set_opt(ret->cert,d2i_X509,X509_free,0);
+	M_ASN1_D2I_get_IMP_set_opt_type(X509,ret->cert,d2i_X509,X509_free,0);
 	M_ASN1_D2I_get_IMP_set_opt(ret->crl,d2i_X509_CRL,X509_CRL_free,1);
 	M_ASN1_D2I_get_set(ret->signer_info,d2i_PKCS7_SIGNER_INFO,
 		PKCS7_SIGNER_INFO_free);
@@ -134,7 +134,7 @@
 	ASN1_INTEGER_free(a->version);
 	sk_pop_free(a->md_algs,X509_ALGOR_free);
 	PKCS7_free(a->contents);
-	sk_pop_free(a->cert,X509_free);
+	sk_X509_pop_free(a->cert,X509_free);
 	sk_pop_free(a->crl,X509_CRL_free);
 	sk_pop_free(a->signer_info,PKCS7_SIGNER_INFO_free);
 	Free((char *)a);
diff --git a/crypto/dh/Makefile.ssl b/crypto/dh/Makefile.ssl
index acec3c6..712a39f 100644
--- a/crypto/dh/Makefile.ssl
+++ b/crypto/dh/Makefile.ssl
@@ -87,7 +87,7 @@
 dh_check.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 dh_check.o: ../../include/e_os.h ../../include/err.h ../../include/stack.h
 dh_check.o: ../cryptlib.h ../crypto.h ../opensslv.h dh.h
-dh_err.o: ../../include/err.h dh.h
+dh_err.o: ../../include/bn.h ../../include/err.h dh.h
 dh_gen.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 dh_gen.o: ../../include/e_os.h ../../include/err.h ../../include/stack.h
 dh_gen.o: ../cryptlib.h ../crypto.h ../opensslv.h dh.h
diff --git a/crypto/dsa/Makefile.ssl b/crypto/dsa/Makefile.ssl
index d45501a..07620d5 100644
--- a/crypto/dsa/Makefile.ssl
+++ b/crypto/dsa/Makefile.ssl
@@ -91,9 +91,10 @@
 dsa_asn1.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 dsa_asn1.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 dsa_asn1.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-dsa_asn1.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-dsa_asn1.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-dsa_asn1.o: ../cryptlib.h ../crypto.h ../opensslv.h dsa.h
+dsa_asn1.o: ../../include/ripemd.h ../../include/rsa.h
+dsa_asn1.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+dsa_asn1.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+dsa_asn1.o: ../crypto.h ../opensslv.h dsa.h
 dsa_err.o: ../../include/bn.h ../../include/err.h dsa.h
 dsa_gen.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 dsa_gen.o: ../../include/e_os.h ../../include/err.h ../../include/rand.h
@@ -118,6 +119,6 @@
 dsa_vrf.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 dsa_vrf.o: ../../include/rand.h ../../include/rc2.h ../../include/rc4.h
 dsa_vrf.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-dsa_vrf.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-dsa_vrf.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
-dsa_vrf.o: dsa.h
+dsa_vrf.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+dsa_vrf.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+dsa_vrf.o: ../crypto.h ../opensslv.h dsa.h
diff --git a/crypto/err/Makefile.ssl b/crypto/err/Makefile.ssl
index 337f873..9df56d4 100644
--- a/crypto/err/Makefile.ssl
+++ b/crypto/err/Makefile.ssl
@@ -89,9 +89,9 @@
 err_all.o: ../../include/mdc2.h ../../include/objects.h ../../include/pem2.h
 err_all.o: ../../include/pkcs12.h ../../include/pkcs7.h ../../include/rc2.h
 err_all.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-err_all.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-err_all.o: ../../include/x509.h ../../include/x509_vfy.h ../../include/x509v3.h
-err_all.o: ../crypto.h ../opensslv.h err.h
+err_all.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+err_all.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+err_all.o: ../../include/x509v3.h ../crypto.h ../opensslv.h err.h
 err_prn.o: ../../include/bio.h ../../include/buffer.h ../../include/e_os.h
 err_prn.o: ../../include/lhash.h ../../include/stack.h ../cryptlib.h
 err_prn.o: ../crypto.h ../opensslv.h err.h
diff --git a/crypto/evp/Makefile.ssl b/crypto/evp/Makefile.ssl
index 54e21c1..0927949 100644
--- a/crypto/evp/Makefile.ssl
+++ b/crypto/evp/Makefile.ssl
@@ -154,9 +154,9 @@
 c_all.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 c_all.o: ../../include/objects.h ../../include/pkcs12.h ../../include/pkcs7.h
 c_all.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-c_all.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-c_all.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-c_all.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
+c_all.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+c_all.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+c_all.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 digest.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 digest.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 digest.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -478,9 +478,9 @@
 evp_key.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 evp_key.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 evp_key.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-evp_key.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-evp_key.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-evp_key.o: ../crypto.h ../opensslv.h evp.h
+evp_key.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+evp_key.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+evp_key.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 evp_lib.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 evp_lib.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 evp_lib.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -497,9 +497,9 @@
 evp_pbe.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 evp_pbe.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 evp_pbe.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-evp_pbe.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-evp_pbe.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-evp_pbe.o: ../crypto.h ../opensslv.h evp.h
+evp_pbe.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+evp_pbe.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+evp_pbe.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 evp_pkey.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 evp_pkey.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 evp_pkey.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -507,9 +507,10 @@
 evp_pkey.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 evp_pkey.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rand.h
 evp_pkey.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-evp_pkey.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-evp_pkey.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-evp_pkey.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
+evp_pkey.o: ../../include/ripemd.h ../../include/rsa.h
+evp_pkey.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+evp_pkey.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+evp_pkey.o: ../crypto.h ../opensslv.h evp.h
 m_dss.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_dss.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_dss.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -517,9 +518,9 @@
 m_dss.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_dss.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_dss.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_dss.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_dss.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_dss.o: ../crypto.h ../opensslv.h evp.h
+m_dss.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_dss.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_dss.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_dss1.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_dss1.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_dss1.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -527,9 +528,9 @@
 m_dss1.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_dss1.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_dss1.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_dss1.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_dss1.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_dss1.o: ../crypto.h ../opensslv.h evp.h
+m_dss1.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_dss1.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_dss1.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_md2.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_md2.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_md2.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -537,9 +538,9 @@
 m_md2.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_md2.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_md2.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_md2.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_md2.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_md2.o: ../crypto.h ../opensslv.h evp.h
+m_md2.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_md2.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_md2.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_md5.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_md5.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_md5.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -547,9 +548,9 @@
 m_md5.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_md5.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_md5.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_md5.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_md5.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_md5.o: ../crypto.h ../opensslv.h evp.h
+m_md5.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_md5.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_md5.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_mdc2.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_mdc2.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_mdc2.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -557,9 +558,9 @@
 m_mdc2.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_mdc2.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_mdc2.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_mdc2.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_mdc2.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_mdc2.o: ../crypto.h ../opensslv.h evp.h
+m_mdc2.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_mdc2.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_mdc2.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_null.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_null.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_null.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -567,9 +568,9 @@
 m_null.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_null.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_null.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_null.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_null.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_null.o: ../crypto.h ../opensslv.h evp.h
+m_null.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_null.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_null.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_ripemd.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_ripemd.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_ripemd.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -577,9 +578,9 @@
 m_ripemd.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_ripemd.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_ripemd.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_ripemd.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_ripemd.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_ripemd.o: ../crypto.h ../opensslv.h evp.h
+m_ripemd.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_ripemd.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_ripemd.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_sha.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_sha.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_sha.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -587,9 +588,9 @@
 m_sha.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_sha.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_sha.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_sha.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_sha.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_sha.o: ../crypto.h ../opensslv.h evp.h
+m_sha.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_sha.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_sha.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 m_sha1.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 m_sha1.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 m_sha1.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -597,9 +598,9 @@
 m_sha1.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 m_sha1.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 m_sha1.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-m_sha1.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-m_sha1.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-m_sha1.o: ../crypto.h ../opensslv.h evp.h
+m_sha1.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+m_sha1.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+m_sha1.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 names.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 names.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 names.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -607,9 +608,9 @@
 names.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 names.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 names.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-names.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-names.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-names.o: ../crypto.h ../opensslv.h evp.h
+names.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+names.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+names.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 p_dec.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p_dec.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p_dec.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -617,9 +618,9 @@
 p_dec.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p_dec.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rand.h
 p_dec.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p_dec.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p_dec.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p_dec.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
+p_dec.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p_dec.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p_dec.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 p_enc.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p_enc.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p_enc.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -627,9 +628,9 @@
 p_enc.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p_enc.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rand.h
 p_enc.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p_enc.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p_enc.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p_enc.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
+p_enc.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p_enc.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p_enc.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 p_lib.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 p_lib.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 p_lib.o: ../../include/cast.h ../../include/des.h ../../include/dh.h
@@ -637,9 +638,9 @@
 p_lib.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p_lib.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p_lib.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p_lib.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p_lib.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p_lib.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
+p_lib.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p_lib.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p_lib.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 p_open.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p_open.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p_open.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -647,9 +648,9 @@
 p_open.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p_open.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p_open.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p_open.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p_open.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p_open.o: ../crypto.h ../opensslv.h evp.h
+p_open.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p_open.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p_open.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 p_seal.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p_seal.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p_seal.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -657,9 +658,10 @@
 p_seal.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p_seal.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rand.h
 p_seal.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p_seal.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p_seal.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p_seal.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
+p_seal.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p_seal.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p_seal.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+p_seal.o: evp.h
 p_sign.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p_sign.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p_sign.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -667,9 +669,9 @@
 p_sign.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p_sign.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p_sign.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p_sign.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p_sign.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p_sign.o: ../crypto.h ../opensslv.h evp.h
+p_sign.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p_sign.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p_sign.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
 p_verify.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p_verify.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p_verify.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -677,6 +679,6 @@
 p_verify.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 p_verify.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 p_verify.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p_verify.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p_verify.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p_verify.o: ../crypto.h ../opensslv.h evp.h
+p_verify.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p_verify.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p_verify.o: ../cryptlib.h ../crypto.h ../opensslv.h evp.h
diff --git a/crypto/pem/Makefile.ssl b/crypto/pem/Makefile.ssl
index 60da66a..f6ffab0 100644
--- a/crypto/pem/Makefile.ssl
+++ b/crypto/pem/Makefile.ssl
@@ -112,9 +112,9 @@
 pem_all.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 pem_all.o: ../../include/opensslv.h ../../include/pkcs7.h ../../include/rc2.h
 pem_all.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-pem_all.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-pem_all.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h pem.h
-pem_all.o: pem2.h
+pem_all.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+pem_all.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+pem_all.o: ../cryptlib.h pem.h pem2.h
 pem_err.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pem_err.o: ../../include/bn.h ../../include/cast.h ../../include/crypto.h
 pem_err.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -123,8 +123,8 @@
 pem_err.o: ../../include/objects.h ../../include/opensslv.h
 pem_err.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 pem_err.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-pem_err.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-pem_err.o: ../../include/x509_vfy.h pem.h pem2.h
+pem_err.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+pem_err.o: ../../include/x509.h ../../include/x509_vfy.h pem.h pem2.h
 pem_info.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pem_info.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 pem_info.o: ../../include/crypto.h ../../include/des.h ../../include/dh.h
@@ -133,9 +133,9 @@
 pem_info.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 pem_info.o: ../../include/opensslv.h ../../include/pkcs7.h ../../include/rc2.h
 pem_info.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-pem_info.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-pem_info.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h pem.h
-pem_info.o: pem2.h
+pem_info.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+pem_info.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+pem_info.o: ../cryptlib.h pem.h pem2.h
 pem_lib.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pem_lib.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 pem_lib.o: ../../include/crypto.h ../../include/des.h ../../include/dh.h
@@ -144,9 +144,9 @@
 pem_lib.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 pem_lib.o: ../../include/opensslv.h ../../include/pkcs7.h ../../include/rand.h
 pem_lib.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-pem_lib.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-pem_lib.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-pem_lib.o: ../cryptlib.h pem.h pem2.h
+pem_lib.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+pem_lib.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+pem_lib.o: ../../include/x509_vfy.h ../cryptlib.h pem.h pem2.h
 pem_seal.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pem_seal.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 pem_seal.o: ../../include/crypto.h ../../include/des.h ../../include/dh.h
@@ -155,9 +155,10 @@
 pem_seal.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 pem_seal.o: ../../include/opensslv.h ../../include/pkcs7.h ../../include/rand.h
 pem_seal.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-pem_seal.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-pem_seal.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-pem_seal.o: ../cryptlib.h pem.h pem2.h
+pem_seal.o: ../../include/ripemd.h ../../include/rsa.h
+pem_seal.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+pem_seal.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h pem.h
+pem_seal.o: pem2.h
 pem_sign.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pem_sign.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 pem_sign.o: ../../include/crypto.h ../../include/des.h ../../include/dh.h
@@ -166,6 +167,7 @@
 pem_sign.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 pem_sign.o: ../../include/opensslv.h ../../include/pkcs7.h ../../include/rand.h
 pem_sign.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-pem_sign.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-pem_sign.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-pem_sign.o: ../cryptlib.h pem.h pem2.h
+pem_sign.o: ../../include/ripemd.h ../../include/rsa.h
+pem_sign.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+pem_sign.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h pem.h
+pem_sign.o: pem2.h
diff --git a/crypto/pkcs12/Makefile.ssl b/crypto/pkcs12/Makefile.ssl
index 2511724..ff016d5 100644
--- a/crypto/pkcs12/Makefile.ssl
+++ b/crypto/pkcs12/Makefile.ssl
@@ -97,9 +97,10 @@
 p12_add.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_add.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_add.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_add.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_add.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_add.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_add.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p12_add.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p12_add.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+p12_add.o: pkcs12.h
 p12_attr.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_attr.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_attr.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -107,9 +108,10 @@
 p12_attr.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_attr.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_attr.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_attr.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_attr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_attr.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_attr.o: ../../include/ripemd.h ../../include/rsa.h
+p12_attr.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_attr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_attr.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_bags.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 p12_bags.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 p12_bags.o: ../../include/cast.h ../../include/des.h ../../include/dh.h
@@ -118,9 +120,9 @@
 p12_bags.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 p12_bags.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 p12_bags.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-p12_bags.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-p12_bags.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
-p12_bags.o: pkcs12.h
+p12_bags.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_bags.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_bags.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_crpt.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_crpt.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_crpt.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -128,9 +130,10 @@
 p12_crpt.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_crpt.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_crpt.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_crpt.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_crpt.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_crpt.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_crpt.o: ../../include/ripemd.h ../../include/rsa.h
+p12_crpt.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_crpt.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_crpt.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_crt.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_crt.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_crt.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -138,9 +141,10 @@
 p12_crt.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_crt.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_crt.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_crt.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_crt.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_crt.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_crt.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p12_crt.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p12_crt.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+p12_crt.o: pkcs12.h
 p12_decr.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_decr.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_decr.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -148,9 +152,10 @@
 p12_decr.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_decr.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_decr.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_decr.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_decr.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_decr.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_decr.o: ../../include/ripemd.h ../../include/rsa.h
+p12_decr.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_decr.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_decr.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_init.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_init.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_init.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -158,9 +163,10 @@
 p12_init.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_init.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_init.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_init.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_init.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_init.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_init.o: ../../include/ripemd.h ../../include/rsa.h
+p12_init.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_init.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_init.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_key.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_key.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_key.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -168,9 +174,10 @@
 p12_key.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_key.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_key.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_key.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_key.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_key.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_key.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p12_key.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p12_key.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+p12_key.o: pkcs12.h
 p12_kiss.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_kiss.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_kiss.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -178,9 +185,10 @@
 p12_kiss.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_kiss.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_kiss.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_kiss.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_kiss.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_kiss.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_kiss.o: ../../include/ripemd.h ../../include/rsa.h
+p12_kiss.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_kiss.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_kiss.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_lib.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 p12_lib.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 p12_lib.o: ../../include/cast.h ../../include/des.h ../../include/dh.h
@@ -189,9 +197,9 @@
 p12_lib.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 p12_lib.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 p12_lib.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-p12_lib.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-p12_lib.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
-p12_lib.o: pkcs12.h
+p12_lib.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_lib.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_lib.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_mac.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 p12_mac.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 p12_mac.o: ../../include/cast.h ../../include/des.h ../../include/dh.h
@@ -200,9 +208,9 @@
 p12_mac.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 p12_mac.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 p12_mac.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-p12_mac.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-p12_mac.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
-p12_mac.o: pkcs12.h
+p12_mac.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_mac.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_mac.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_mutl.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_mutl.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_mutl.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -211,9 +219,9 @@
 p12_mutl.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 p12_mutl.o: ../../include/pkcs7.h ../../include/rand.h ../../include/rc2.h
 p12_mutl.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-p12_mutl.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-p12_mutl.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-p12_mutl.o: ../crypto.h ../opensslv.h pkcs12.h
+p12_mutl.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+p12_mutl.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+p12_mutl.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
 p12_sbag.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 p12_sbag.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 p12_sbag.o: ../../include/cast.h ../../include/des.h ../../include/dh.h
@@ -222,9 +230,9 @@
 p12_sbag.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 p12_sbag.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 p12_sbag.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-p12_sbag.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-p12_sbag.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
-p12_sbag.o: pkcs12.h
+p12_sbag.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+p12_sbag.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+p12_sbag.o: ../crypto.h ../opensslv.h pkcs12.h
 p12_utl.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 p12_utl.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 p12_utl.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -232,9 +240,10 @@
 p12_utl.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 p12_utl.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 p12_utl.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-p12_utl.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-p12_utl.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-p12_utl.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs12.h
+p12_utl.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+p12_utl.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+p12_utl.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+p12_utl.o: pkcs12.h
 pk12err.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pk12err.o: ../../include/bn.h ../../include/cast.h ../../include/des.h
 pk12err.o: ../../include/dh.h ../../include/dsa.h ../../include/err.h
@@ -242,5 +251,6 @@
 pk12err.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 pk12err.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 pk12err.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-pk12err.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-pk12err.o: ../../include/x509_vfy.h ../crypto.h ../opensslv.h pkcs12.h
+pk12err.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+pk12err.o: ../../include/x509.h ../../include/x509_vfy.h ../crypto.h
+pk12err.o: ../opensslv.h pkcs12.h
diff --git a/crypto/pkcs7/Makefile.ssl b/crypto/pkcs7/Makefile.ssl
index 1a38f10..d5331ba 100644
--- a/crypto/pkcs7/Makefile.ssl
+++ b/crypto/pkcs7/Makefile.ssl
@@ -93,9 +93,10 @@
 pk7_doit.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 pk7_doit.o: ../../include/mdc2.h ../../include/objects.h ../../include/rand.h
 pk7_doit.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-pk7_doit.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-pk7_doit.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-pk7_doit.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs7.h
+pk7_doit.o: ../../include/ripemd.h ../../include/rsa.h
+pk7_doit.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+pk7_doit.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+pk7_doit.o: ../crypto.h ../opensslv.h pkcs7.h
 pk7_lib.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pk7_lib.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 pk7_lib.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -103,15 +104,16 @@
 pk7_lib.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 pk7_lib.o: ../../include/mdc2.h ../../include/objects.h ../../include/rc2.h
 pk7_lib.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-pk7_lib.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-pk7_lib.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-pk7_lib.o: ../crypto.h ../opensslv.h pkcs7.h
+pk7_lib.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+pk7_lib.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+pk7_lib.o: ../cryptlib.h ../crypto.h ../opensslv.h pkcs7.h
 pkcs7err.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 pkcs7err.o: ../../include/bn.h ../../include/cast.h ../../include/des.h
 pkcs7err.o: ../../include/dh.h ../../include/dsa.h ../../include/err.h
 pkcs7err.o: ../../include/evp.h ../../include/idea.h ../../include/md2.h
 pkcs7err.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 pkcs7err.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-pkcs7err.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-pkcs7err.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-pkcs7err.o: ../crypto.h ../opensslv.h pkcs7.h
+pkcs7err.o: ../../include/ripemd.h ../../include/rsa.h
+pkcs7err.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+pkcs7err.o: ../../include/x509.h ../../include/x509_vfy.h ../crypto.h
+pkcs7err.o: ../opensslv.h pkcs7.h
diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c
index 88229c0..1b81508 100644
--- a/crypto/pkcs7/pk7_doit.c
+++ b/crypto/pkcs7/pk7_doit.c
@@ -650,7 +650,8 @@
 	PKCS7_ISSUER_AND_SERIAL *ias;
 	int ret=0,i;
 	int md_type;
-	STACK *sk,*cert;
+	STACK *sk;
+	STACK_OF(X509) *cert;
 	BIO *btmp;
 	X509 *x509;
 	EVP_PKEY *pkey;
diff --git a/crypto/pkcs7/pk7_lib.c b/crypto/pkcs7/pk7_lib.c
index 7534f4c..d69f536 100644
--- a/crypto/pkcs7/pk7_lib.c
+++ b/crypto/pkcs7/pk7_lib.c
@@ -250,7 +250,7 @@
 X509 *x509;
 	{
 	int i;
-	STACK **sk;
+	STACK_OF(X509) **sk;
 
 	i=OBJ_obj2nid(p7->type);
 	switch (i)
@@ -267,9 +267,9 @@
 		}
 
 	if (*sk == NULL)
-		*sk=sk_new_null();
+		*sk=sk_X509_new_null();
 	CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509);
-	sk_push(*sk,(char *)x509);
+	sk_X509_push(*sk,x509);
 	return(1);
 	}
 
diff --git a/crypto/pkcs7/pkcs7.h b/crypto/pkcs7/pkcs7.h
index 6fcb63b..6038aac 100644
--- a/crypto/pkcs7/pkcs7.h
+++ b/crypto/pkcs7/pkcs7.h
@@ -106,7 +106,7 @@
 	{
 	ASN1_INTEGER			*version;	/* version 1 */
 	STACK /* X509_ALGOR's */	*md_algs;	/* md used */
-	STACK /* X509 */		*cert;		/* [ 0 ] */
+	STACK_OF(X509)			*cert;		/* [ 0 ] */
 	STACK /* X509_CRL */		*crl;		/* [ 1 ] */
 	STACK /* PKCS7_SIGNER_INFO */	*signer_info;
 
@@ -133,7 +133,7 @@
 	{
 	ASN1_INTEGER			*version;	/* version 1 */
 	STACK /* X509_ALGOR's */	*md_algs;	/* md used */
-	STACK /* X509 */		*cert;		/* [ 0 ] */
+	STACK_OF(X509)			*cert;		/* [ 0 ] */
 	STACK /* X509_CRL */		*crl;		/* [ 1 ] */
 	STACK /* PKCS7_SIGNER_INFO */	*signer_info;
 
diff --git a/crypto/rsa/Makefile.ssl b/crypto/rsa/Makefile.ssl
index 3703278..48dcd0c 100644
--- a/crypto/rsa/Makefile.ssl
+++ b/crypto/rsa/Makefile.ssl
@@ -114,9 +114,10 @@
 rsa_saos.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 rsa_saos.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 rsa_saos.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-rsa_saos.o: ../../include/ripemd.h ../../include/sha.h ../../include/stack.h
-rsa_saos.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-rsa_saos.o: ../crypto.h ../opensslv.h rsa.h
+rsa_saos.o: ../../include/ripemd.h ../../include/safestack.h
+rsa_saos.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+rsa_saos.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+rsa_saos.o: rsa.h
 rsa_sign.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 rsa_sign.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 rsa_sign.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -124,9 +125,10 @@
 rsa_sign.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 rsa_sign.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 rsa_sign.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-rsa_sign.o: ../../include/ripemd.h ../../include/sha.h ../../include/stack.h
-rsa_sign.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-rsa_sign.o: ../crypto.h ../opensslv.h rsa.h
+rsa_sign.o: ../../include/ripemd.h ../../include/safestack.h
+rsa_sign.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+rsa_sign.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+rsa_sign.o: rsa.h
 rsa_ssl.o: ../../include/bio.h ../../include/bn.h ../../include/buffer.h
 rsa_ssl.o: ../../include/e_os.h ../../include/err.h ../../include/rand.h
 rsa_ssl.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h rsa.h
diff --git a/crypto/stack/Makefile.ssl b/crypto/stack/Makefile.ssl
index 0a9d125..0189704 100644
--- a/crypto/stack/Makefile.ssl
+++ b/crypto/stack/Makefile.ssl
@@ -25,7 +25,7 @@
 
 SRC= $(LIBSRC)
 
-EXHEADER= stack.h
+EXHEADER= stack.h safestack.h
 HEADER=	$(EXHEADER)
 
 ALL=    $(GENERAL) $(SRC) $(HEADER)
diff --git a/crypto/stack/safestack.h b/crypto/stack/safestack.h
new file mode 100644
index 0000000..87bc922
--- /dev/null
+++ b/crypto/stack/safestack.h
@@ -0,0 +1,115 @@
+/* ====================================================================
+ * Copyright (c) 1999 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
+ *    openssl-core@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_SAFESTACK_H
+#define HEADER_SAFESTACK_H
+
+#include "stack.h"
+
+#define STACK_OF(type)	STACK_##type
+
+#define DECLARE_STACK_OF(type) \
+typedef struct stack_st_##type	\
+    { \
+    STACK stack; \
+    } STACK_OF(type); \
+STACK_OF(type) *sk_##type##_new(int (*cmp)(type **,type **)); \
+STACK_OF(type) *sk_##type##_new_null(void); \
+void sk_##type##_free(STACK_OF(type) *sk); \
+int sk_##type##_num(STACK_OF(type) *sk); \
+type *sk_##type##_value(STACK_OF(type) *sk,int n); \
+type *sk_##type##_set(STACK_OF(type) *sk,int n,type *v); \
+void sk_##type##_zero(STACK_OF(type) *sk); \
+int sk_##type##_push(STACK_OF(type) *sk,type *v); \
+int sk_##type##_find(STACK_OF(type) *sk,type *v); \
+void sk_##type##_delete(STACK_OF(type) *sk,int n); \
+void sk_##type##_delete_ptr(STACK_OF(type) *sk,type *v); \
+void sk_##type##_set_cmp_func(STACK_OF(type) *sk,int (*cmp)(type **,type **)); \
+STACK_OF(type) *sk_##type##_dup(STACK_OF(type) *sk); \
+void sk_##type##_pop_free(STACK_OF(type) *sk,void (*func)(type *)); \
+type *sk_##type##_shift(STACK_OF(type) *sk);
+
+#define IMPLEMENT_STACK_OF(type) \
+STACK_OF(type) *sk_##type##_new(int (*cmp)(type **,type **)) \
+    { return (STACK_OF(type) *)sk_new(cmp); } \
+STACK_OF(type) *sk_##type##_new_null() \
+    { return (STACK_OF(type) *)sk_new_null(); } \
+void sk_##type##_free(STACK_OF(type) *sk) \
+    { sk_free((STACK *)sk); } \
+int sk_##type##_num(STACK_OF(type) *sk) \
+    { return sk_num((STACK *)sk); } \
+type *sk_##type##_value(STACK_OF(type) *sk,int n) \
+    { return (type *)sk_value((STACK *)sk,n); } \
+type *sk_##type##_set(STACK_OF(type) *sk,int n,type *v) \
+    { return (type *)(sk_value((STACK *)sk,n)=(char *)v); } \
+void sk_##type##_zero(STACK_OF(type) *sk) \
+    { sk_zero((STACK *)sk); } \
+int sk_##type##_push(STACK_OF(type) *sk,type *v) \
+    { return sk_push((STACK *)sk,(char *)v); } \
+int sk_##type##_find(STACK_OF(type) *sk,type *v) \
+    { return sk_find((STACK *)sk,(char *)v); } \
+void sk_##type##_delete(STACK_OF(type) *sk,int n) \
+    { sk_delete((STACK *)sk,n); } \
+void sk_##type##_delete_ptr(STACK_OF(type) *sk,type *v) \
+    { sk_delete_ptr((STACK *)sk,(char *)v); } \
+void sk_##type##_set_cmp_func(STACK_OF(type) *sk,int (*cmp)(type **,type **)) \
+    { sk_set_cmp_func((STACK *)sk,cmp); } \
+STACK_OF(type) *sk_##type##_dup(STACK_OF(type) *sk) \
+    { return (STACK_OF(type) *)sk_dup((STACK *)sk); } \
+void sk_##type##_pop_free(STACK_OF(type) *sk,void (*func)(type *)) \
+    { sk_pop_free((STACK *)sk,func); } \
+type *sk_##type##_shift(STACK_OF(type) *sk) \
+    { return (type *)sk_shift((STACK *)sk); }
+
+#endif /* ndef HEADER_SAFESTACK_H */
diff --git a/crypto/x509/Makefile.ssl b/crypto/x509/Makefile.ssl
index 4b9d095..b9cd45a 100644
--- a/crypto/x509/Makefile.ssl
+++ b/crypto/x509/Makefile.ssl
@@ -104,8 +104,8 @@
 by_dir.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 by_dir.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 by_dir.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-by_dir.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
-by_dir.o: ../opensslv.h x509.h x509_vfy.h
+by_dir.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+by_dir.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 by_file.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 by_file.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 by_file.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -114,9 +114,9 @@
 by_file.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 by_file.o: ../../include/pem.h ../../include/pem2.h ../../include/pkcs7.h
 by_file.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-by_file.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-by_file.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h x509.h
-by_file.o: x509_vfy.h
+by_file.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+by_file.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
+by_file.o: ../opensslv.h x509.h x509_vfy.h
 v3_net.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_net.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_net.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -124,9 +124,9 @@
 v3_net.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 v3_net.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_net.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_net.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_net.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h x509.h
-v3_net.o: x509_vfy.h
+v3_net.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+v3_net.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
+v3_net.o: ../opensslv.h x509.h x509_vfy.h
 v3_x509.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_x509.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_x509.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -134,9 +134,9 @@
 v3_x509.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 v3_x509.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_x509.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_x509.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_x509.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h x509.h
-v3_x509.o: x509_vfy.h
+v3_x509.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+v3_x509.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
+v3_x509.o: ../opensslv.h x509.h x509_vfy.h
 x509_cmp.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_cmp.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_cmp.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -144,9 +144,9 @@
 x509_cmp.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509_cmp.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509_cmp.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509_cmp.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509_cmp.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509_cmp.o: x509.h x509_vfy.h
+x509_cmp.o: ../../include/ripemd.h ../../include/rsa.h
+x509_cmp.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_cmp.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_d2.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_d2.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_d2.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -154,9 +154,9 @@
 x509_d2.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509_d2.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509_d2.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509_d2.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509_d2.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h x509.h
-x509_d2.o: x509_vfy.h
+x509_d2.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+x509_d2.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
+x509_d2.o: ../opensslv.h x509.h x509_vfy.h
 x509_def.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_def.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_def.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -164,9 +164,9 @@
 x509_def.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509_def.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509_def.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509_def.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509_def.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509_def.o: x509.h x509_vfy.h
+x509_def.o: ../../include/ripemd.h ../../include/rsa.h
+x509_def.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_def.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_err.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_err.o: ../../include/bn.h ../../include/cast.h ../../include/des.h
 x509_err.o: ../../include/dh.h ../../include/dsa.h ../../include/err.h
@@ -174,8 +174,8 @@
 x509_err.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 x509_err.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 x509_err.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-x509_err.o: ../../include/sha.h ../../include/stack.h ../crypto.h ../opensslv.h
-x509_err.o: x509.h x509_vfy.h
+x509_err.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_err.o: ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_ext.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_ext.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_ext.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -183,9 +183,9 @@
 x509_ext.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509_ext.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509_ext.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509_ext.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509_ext.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509_ext.o: x509.h x509_vfy.h
+x509_ext.o: ../../include/ripemd.h ../../include/rsa.h
+x509_ext.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_ext.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_lu.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_lu.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_lu.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -194,8 +194,8 @@
 x509_lu.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 x509_lu.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 x509_lu.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-x509_lu.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
-x509_lu.o: ../opensslv.h x509.h x509_vfy.h
+x509_lu.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_lu.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_obj.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_obj.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_obj.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -204,8 +204,8 @@
 x509_obj.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 x509_obj.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 x509_obj.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-x509_obj.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
-x509_obj.o: ../opensslv.h x509.h x509_vfy.h
+x509_obj.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_obj.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_r2x.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_r2x.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_r2x.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -213,9 +213,9 @@
 x509_r2x.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509_r2x.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509_r2x.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509_r2x.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509_r2x.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509_r2x.o: x509.h x509_vfy.h
+x509_r2x.o: ../../include/ripemd.h ../../include/rsa.h
+x509_r2x.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_r2x.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_req.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_req.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_req.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -224,8 +224,9 @@
 x509_req.o: ../../include/mdc2.h ../../include/objects.h ../../include/pem.h
 x509_req.o: ../../include/pem2.h ../../include/pkcs7.h ../../include/rc2.h
 x509_req.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-x509_req.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-x509_req.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
+x509_req.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+x509_req.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
+x509_req.o: x509.h x509_vfy.h
 x509_set.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_set.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_set.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -233,9 +234,9 @@
 x509_set.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509_set.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509_set.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509_set.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509_set.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509_set.o: x509.h x509_vfy.h
+x509_set.o: ../../include/ripemd.h ../../include/rsa.h
+x509_set.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_set.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_txt.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_txt.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_txt.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -244,8 +245,8 @@
 x509_txt.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 x509_txt.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 x509_txt.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-x509_txt.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
-x509_txt.o: ../opensslv.h x509.h x509_vfy.h
+x509_txt.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_txt.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509_v3.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_v3.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_v3.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -253,9 +254,9 @@
 x509_v3.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509_v3.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509_v3.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509_v3.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509_v3.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h x509.h
-x509_v3.o: x509_vfy.h
+x509_v3.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+x509_v3.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
+x509_v3.o: ../opensslv.h x509.h x509_vfy.h
 x509_vfy.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509_vfy.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509_vfy.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -264,8 +265,8 @@
 x509_vfy.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 x509_vfy.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 x509_vfy.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-x509_vfy.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
-x509_vfy.o: ../opensslv.h x509.h x509_vfy.h
+x509_vfy.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509_vfy.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509name.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509name.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509name.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -273,9 +274,9 @@
 x509name.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509name.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509name.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509name.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509name.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509name.o: x509.h x509_vfy.h
+x509name.o: ../../include/ripemd.h ../../include/rsa.h
+x509name.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509name.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509pack.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509pack.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509pack.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -283,9 +284,9 @@
 x509pack.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509pack.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509pack.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509pack.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509pack.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509pack.o: x509.h x509_vfy.h
+x509pack.o: ../../include/ripemd.h ../../include/rsa.h
+x509pack.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509pack.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509rset.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509rset.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509rset.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -293,9 +294,9 @@
 x509rset.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509rset.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509rset.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509rset.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509rset.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509rset.o: x509.h x509_vfy.h
+x509rset.o: ../../include/ripemd.h ../../include/rsa.h
+x509rset.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509rset.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x509type.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x509type.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x509type.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -303,9 +304,9 @@
 x509type.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x509type.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x509type.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x509type.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x509type.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h
-x509type.o: x509.h x509_vfy.h
+x509type.o: ../../include/ripemd.h ../../include/rsa.h
+x509type.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+x509type.o: ../cryptlib.h ../crypto.h ../opensslv.h x509.h x509_vfy.h
 x_all.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 x_all.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 x_all.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -313,6 +314,6 @@
 x_all.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 x_all.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 x_all.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-x_all.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-x_all.o: ../../include/stack.h ../cryptlib.h ../crypto.h ../opensslv.h x509.h
-x_all.o: x509_vfy.h
+x_all.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+x_all.o: ../../include/sha.h ../../include/stack.h ../cryptlib.h ../crypto.h
+x_all.o: ../opensslv.h x509.h x509_vfy.h
diff --git a/crypto/x509/x509.h b/crypto/x509/x509.h
index 2f1ca62..0cb6c04 100644
--- a/crypto/x509/x509.h
+++ b/crypto/x509/x509.h
@@ -66,6 +66,7 @@
 
 #include "stack.h"
 #include "asn1.h"
+#include "safestack.h"
 
 #ifndef NO_RSA
 #include "rsa.h"
@@ -155,6 +156,8 @@
 	unsigned long hash; /* Keep the hash around for lookups */
 	} X509_NAME;
 
+DECLARE_STACK_OF(X509_NAME)
+
 #define X509_EX_V_NETSCAPE_HACK		0x8000
 #define X509_EX_V_INIT			0x0001
 typedef struct X509_extension_st
@@ -228,6 +231,9 @@
 	char *name;
 	} X509;
 
+DECLARE_STACK_OF(X509)
+DECLARE_ASN1_SET_OF(X509)
+
 typedef struct X509_revoked_st
 	{
 	ASN1_INTEGER *serialNumber;
@@ -870,9 +876,9 @@
 int		X509_verify_cert(X509_STORE_CTX *ctx);
 
 /* lookup a cert from a X509 STACK */
-X509 *X509_find_by_issuer_and_serial(STACK *sk,X509_NAME *name,
-                ASN1_INTEGER *serial);
-X509 *X509_find_by_subject(STACK *sk,X509_NAME *name);
+X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk,X509_NAME *name,
+				     ASN1_INTEGER *serial);
+X509 *X509_find_by_subject(STACK_OF(X509) *sk,X509_NAME *name);
 
 int i2d_PBEPARAM(PBEPARAM *a, unsigned char **pp);
 PBEPARAM *PBEPARAM_new(void);
diff --git a/crypto/x509/x509_cmp.c b/crypto/x509/x509_cmp.c
index 7d85018..7dec319 100644
--- a/crypto/x509/x509_cmp.c
+++ b/crypto/x509/x509_cmp.c
@@ -218,7 +218,7 @@
 
 /* Search a stack of X509 for a match */
 X509 *X509_find_by_issuer_and_serial(sk,name,serial)
-STACK *sk;
+STACK_OF(X509) *sk;
 X509_NAME *name;
 ASN1_INTEGER *serial;
 	{
@@ -230,9 +230,9 @@
 	cinf.serialNumber=serial;
 	cinf.issuer=name;
 
-	for (i=0; i<sk_num(sk); i++)
+	for (i=0; i<sk_X509_num(sk); i++)
 		{
-		x509=(X509 *)sk_value(sk,i);
+		x509=sk_X509_value(sk,i);
 		if (X509_issuer_and_serial_cmp(x509,&x) == 0)
 			return(x509);
 		}
@@ -240,15 +240,15 @@
 	}
 
 X509 *X509_find_by_subject(sk,name)
-STACK *sk;
+STACK_OF(X509) *sk;
 X509_NAME *name;
 	{
 	X509 *x509;
 	int i;
 
-	for (i=0; i<sk_num(sk); i++)
+	for (i=0; i<sk_X509_num(sk); i++)
 		{
-		x509=(X509 *)sk_value(sk,i);
+		x509=sk_X509_value(sk,i);
 		if (X509_NAME_cmp(X509_get_subject_name(x509),name) == 0)
 			return(x509);
 		}
diff --git a/crypto/x509/x509_lu.c b/crypto/x509/x509_lu.c
index a70ce77..bb913c2 100644
--- a/crypto/x509/x509_lu.c
+++ b/crypto/x509/x509_lu.c
@@ -421,7 +421,7 @@
 X509_STORE_CTX *ctx;
 X509_STORE *store;
 X509 *x509;
-STACK *chain;
+STACK_OF(X509) *chain;
 	{
 	ctx->ctx=store;
 	ctx->current_method=0;
diff --git a/crypto/x509/x509_vfy.c b/crypto/x509/x509_vfy.c
index 0d3187d..10f1848 100644
--- a/crypto/x509/x509_vfy.c
+++ b/crypto/x509/x509_vfy.c
@@ -112,7 +112,7 @@
 	int depth,i,ok=0;
 	int num;
 	int (*cb)();
-	STACK *sktmp=NULL;
+	STACK_OF(X509) *sktmp=NULL;
 
 	if (ctx->cert == NULL)
 		{
@@ -138,7 +138,8 @@
 		}
 
 	/* We use a temporary so we can chop and hack at it */
-	if ((ctx->untrusted != NULL) && (sktmp=sk_dup(ctx->untrusted)) == NULL)
+	if (ctx->untrusted != NULL
+	    && (sktmp=sk_X509_dup(ctx->untrusted)) == NULL)
 		{
 		X509err(X509_F_X509_VERIFY_CERT,ERR_R_MALLOC_FAILURE);
 		goto end;
@@ -171,7 +172,7 @@
 					goto end;
 					}
 				CRYPTO_add(&xtmp->references,1,CRYPTO_LOCK_X509);
-				sk_delete_ptr(sktmp,(char *)xtmp);
+				sk_X509_delete_ptr(sktmp,xtmp);
 				ctx->last_untrusted++;
 				x=xtmp;
 				num++;
@@ -290,7 +291,7 @@
 end:
 		X509_get_pubkey_parameters(NULL,ctx->chain);
 		}
-	if (sktmp != NULL) sk_free(sktmp);
+	if (sktmp != NULL) sk_X509_free(sktmp);
 	if (chain_ss != NULL) X509_free(chain_ss);
 	return(ok);
 	}
@@ -659,9 +660,11 @@
 
 void X509_STORE_CTX_set_chain(ctx,sk)
 X509_STORE_CTX *ctx;
-STACK *sk;
+STACK_OF(X509) *sk;
 	{
 	ctx->untrusted=sk;
 	}
 
-
+IMPLEMENT_STACK_OF(X509)
+IMPLEMENT_ASN1_SET_OF(X509)
+IMPLEMENT_STACK_OF(X509_NAME)
diff --git a/crypto/x509/x509_vfy.h b/crypto/x509/x509_vfy.h
index 929045f..e49fb18 100644
--- a/crypto/x509/x509_vfy.h
+++ b/crypto/x509/x509_vfy.h
@@ -192,7 +192,7 @@
 
 	/* The following are set by the caller */
 	X509 *cert;		/* The cert to check */
-	STACK *untrusted;	/* chain of X509s - untrusted - passed in */
+	STACK_OF(X509) *untrusted;	/* chain of X509s - untrusted - passed in */
 
 	/* The following is built up */
 	int depth;		/* how far to go looking up certs */
@@ -262,7 +262,7 @@
 void X509_STORE_free(X509_STORE *v);
 
 void X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store,
-	X509 *x509, STACK *chain);
+			 X509 *x509, STACK_OF(X509) *chain);
 void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx);
 
 X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
@@ -317,7 +317,7 @@
 X509 *	X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
 STACK *	X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
 void	X509_STORE_CTX_set_cert(X509_STORE_CTX *c,X509 *x);
-void	X509_STORE_CTX_set_chain(X509_STORE_CTX *c,STACK /* X509 */ *sk);
+void	X509_STORE_CTX_set_chain(X509_STORE_CTX *c,STACK_OF(X509) *sk);
 
 #else
 
diff --git a/crypto/x509v3/Makefile.ssl b/crypto/x509v3/Makefile.ssl
index 1d4347c..ac8690b 100644
--- a/crypto/x509v3/Makefile.ssl
+++ b/crypto/x509v3/Makefile.ssl
@@ -96,9 +96,10 @@
 v3_akey.o: ../../include/lhash.h ../../include/md2.h ../../include/md5.h
 v3_akey.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_akey.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_akey.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_akey.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-v3_akey.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
+v3_akey.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+v3_akey.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+v3_akey.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+v3_akey.o: x509v3.h
 v3_alt.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_alt.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_alt.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -107,9 +108,9 @@
 v3_alt.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_alt.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_alt.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_alt.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_alt.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_alt.o: ../crypto.h ../opensslv.h x509v3.h
+v3_alt.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_alt.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_alt.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3_bcons.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 v3_bcons.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 v3_bcons.o: ../../include/cast.h ../../include/conf.h ../../include/des.h
@@ -118,9 +119,10 @@
 v3_bcons.o: ../../include/lhash.h ../../include/md2.h ../../include/md5.h
 v3_bcons.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_bcons.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_bcons.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_bcons.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-v3_bcons.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
+v3_bcons.o: ../../include/ripemd.h ../../include/rsa.h
+v3_bcons.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+v3_bcons.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+v3_bcons.o: ../crypto.h ../opensslv.h x509v3.h
 v3_bitst.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_bitst.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_bitst.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -129,9 +131,9 @@
 v3_bitst.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_bitst.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_bitst.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_bitst.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_bitst.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_bitst.o: ../crypto.h ../opensslv.h x509v3.h
+v3_bitst.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_bitst.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_bitst.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3_conf.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_conf.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_conf.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -140,9 +142,9 @@
 v3_conf.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_conf.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_conf.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_conf.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_conf.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_conf.o: ../crypto.h ../opensslv.h x509v3.h
+v3_conf.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_conf.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_conf.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3_enum.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_enum.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_enum.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -150,9 +152,10 @@
 v3_enum.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 v3_enum.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_enum.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_enum.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_enum.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-v3_enum.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
+v3_enum.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+v3_enum.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+v3_enum.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+v3_enum.o: x509v3.h
 v3_extku.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_extku.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_extku.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -161,9 +164,9 @@
 v3_extku.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_extku.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_extku.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_extku.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_extku.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_extku.o: ../crypto.h ../opensslv.h x509v3.h
+v3_extku.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_extku.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_extku.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3_genn.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 v3_genn.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 v3_genn.o: ../../include/cast.h ../../include/conf.h ../../include/des.h
@@ -172,9 +175,10 @@
 v3_genn.o: ../../include/lhash.h ../../include/md2.h ../../include/md5.h
 v3_genn.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_genn.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_genn.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_genn.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-v3_genn.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
+v3_genn.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+v3_genn.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+v3_genn.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+v3_genn.o: x509v3.h
 v3_ia5.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_ia5.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_ia5.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -183,9 +187,9 @@
 v3_ia5.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_ia5.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_ia5.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_ia5.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_ia5.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_ia5.o: ../crypto.h ../opensslv.h x509v3.h
+v3_ia5.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_ia5.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_ia5.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3_int.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_int.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_int.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -193,9 +197,10 @@
 v3_int.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 v3_int.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_int.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_int.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_int.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-v3_int.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
+v3_int.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+v3_int.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+v3_int.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+v3_int.o: x509v3.h
 v3_lib.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_lib.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_lib.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -204,9 +209,9 @@
 v3_lib.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_lib.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_lib.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_lib.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_lib.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_lib.o: ../crypto.h ../opensslv.h x509v3.h
+v3_lib.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_lib.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_lib.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3_pku.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 v3_pku.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 v3_pku.o: ../../include/cast.h ../../include/des.h ../../include/dh.h
@@ -215,9 +220,9 @@
 v3_pku.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 v3_pku.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 v3_pku.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-v3_pku.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-v3_pku.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
-v3_pku.o: x509v3.h
+v3_pku.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+v3_pku.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+v3_pku.o: ../crypto.h ../opensslv.h x509v3.h
 v3_prn.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_prn.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_prn.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -226,9 +231,9 @@
 v3_prn.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_prn.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_prn.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_prn.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_prn.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_prn.o: ../crypto.h ../opensslv.h x509v3.h
+v3_prn.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_prn.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_prn.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3_skey.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_skey.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_skey.o: ../../include/des.h ../../include/dh.h ../../include/dsa.h
@@ -236,9 +241,10 @@
 v3_skey.o: ../../include/idea.h ../../include/md2.h ../../include/md5.h
 v3_skey.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_skey.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_skey.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_skey.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-v3_skey.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
+v3_skey.o: ../../include/ripemd.h ../../include/rsa.h ../../include/safestack.h
+v3_skey.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
+v3_skey.o: ../../include/x509_vfy.h ../cryptlib.h ../crypto.h ../opensslv.h
+v3_skey.o: x509v3.h
 v3_sxnet.o: ../../include/asn1.h ../../include/asn1_mac.h ../../include/bio.h
 v3_sxnet.o: ../../include/blowfish.h ../../include/bn.h ../../include/buffer.h
 v3_sxnet.o: ../../include/cast.h ../../include/conf.h ../../include/des.h
@@ -247,9 +253,10 @@
 v3_sxnet.o: ../../include/lhash.h ../../include/md2.h ../../include/md5.h
 v3_sxnet.o: ../../include/mdc2.h ../../include/objects.h ../../include/pkcs7.h
 v3_sxnet.o: ../../include/rc2.h ../../include/rc4.h ../../include/rc5.h
-v3_sxnet.o: ../../include/ripemd.h ../../include/rsa.h ../../include/sha.h
-v3_sxnet.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
-v3_sxnet.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
+v3_sxnet.o: ../../include/ripemd.h ../../include/rsa.h
+v3_sxnet.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+v3_sxnet.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
+v3_sxnet.o: ../crypto.h ../opensslv.h x509v3.h
 v3_utl.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3_utl.o: ../../include/bn.h ../../include/buffer.h ../../include/cast.h
 v3_utl.o: ../../include/conf.h ../../include/des.h ../../include/dh.h
@@ -258,9 +265,9 @@
 v3_utl.o: ../../include/md2.h ../../include/md5.h ../../include/mdc2.h
 v3_utl.o: ../../include/objects.h ../../include/pkcs7.h ../../include/rc2.h
 v3_utl.o: ../../include/rc4.h ../../include/rc5.h ../../include/ripemd.h
-v3_utl.o: ../../include/rsa.h ../../include/sha.h ../../include/stack.h
-v3_utl.o: ../../include/x509.h ../../include/x509_vfy.h ../cryptlib.h
-v3_utl.o: ../crypto.h ../opensslv.h x509v3.h
+v3_utl.o: ../../include/rsa.h ../../include/safestack.h ../../include/sha.h
+v3_utl.o: ../../include/stack.h ../../include/x509.h ../../include/x509_vfy.h
+v3_utl.o: ../cryptlib.h ../crypto.h ../opensslv.h x509v3.h
 v3err.o: ../../include/asn1.h ../../include/bio.h ../../include/blowfish.h
 v3err.o: ../../include/bn.h ../../include/cast.h ../../include/des.h
 v3err.o: ../../include/dh.h ../../include/dsa.h ../../include/err.h
@@ -268,5 +275,6 @@
 v3err.o: ../../include/md5.h ../../include/mdc2.h ../../include/objects.h
 v3err.o: ../../include/pkcs7.h ../../include/rc2.h ../../include/rc4.h
 v3err.o: ../../include/rc5.h ../../include/ripemd.h ../../include/rsa.h
-v3err.o: ../../include/sha.h ../../include/stack.h ../../include/x509.h
-v3err.o: ../../include/x509_vfy.h ../crypto.h ../opensslv.h x509v3.h
+v3err.o: ../../include/safestack.h ../../include/sha.h ../../include/stack.h
+v3err.o: ../../include/x509.h ../../include/x509_vfy.h ../crypto.h
+v3err.o: ../opensslv.h x509v3.h
diff --git a/ssl/Makefile.ssl b/ssl/Makefile.ssl
index 8f18f7f..0a499ff 100644
--- a/ssl/Makefile.ssl
+++ b/ssl/Makefile.ssl
@@ -108,8 +108,9 @@
 bio_ssl.o: ../include/mdc2.h ../include/objects.h ../include/opensslv.h
 bio_ssl.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
 bio_ssl.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-bio_ssl.o: ../include/sha.h ../include/stack.h ../include/x509.h
-bio_ssl.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h tls1.h
+bio_ssl.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+bio_ssl.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
+bio_ssl.o: tls1.h
 s23_clnt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s23_clnt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s23_clnt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -119,8 +120,9 @@
 s23_clnt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s23_clnt.o: ../include/rand.h ../include/rc2.h ../include/rc4.h
 s23_clnt.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-s23_clnt.o: ../include/sha.h ../include/stack.h ../include/x509.h
-s23_clnt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s23_clnt.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+s23_clnt.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
+s23_clnt.o: ssl_locl.h tls1.h
 s23_lib.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s23_lib.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s23_lib.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -129,9 +131,9 @@
 s23_lib.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s23_lib.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s23_lib.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s23_lib.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s23_lib.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s23_lib.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s23_lib.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s23_lib.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s23_lib.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s23_meth.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s23_meth.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s23_meth.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -140,9 +142,9 @@
 s23_meth.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s23_meth.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s23_meth.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s23_meth.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s23_meth.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s23_meth.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s23_meth.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s23_meth.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s23_meth.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s23_pkt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s23_pkt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s23_pkt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -151,9 +153,9 @@
 s23_pkt.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s23_pkt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s23_pkt.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s23_pkt.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s23_pkt.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s23_pkt.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s23_pkt.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s23_pkt.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s23_pkt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s23_srvr.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s23_srvr.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s23_srvr.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -163,8 +165,9 @@
 s23_srvr.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s23_srvr.o: ../include/rand.h ../include/rc2.h ../include/rc4.h
 s23_srvr.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-s23_srvr.o: ../include/sha.h ../include/stack.h ../include/x509.h
-s23_srvr.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s23_srvr.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+s23_srvr.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
+s23_srvr.o: ssl_locl.h tls1.h
 s2_clnt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s2_clnt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s2_clnt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -173,9 +176,9 @@
 s2_clnt.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s2_clnt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s2_clnt.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s2_clnt.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s2_clnt.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s2_clnt.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s2_clnt.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s2_clnt.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s2_clnt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s2_enc.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s2_enc.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s2_enc.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -184,9 +187,9 @@
 s2_enc.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s2_enc.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s2_enc.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s2_enc.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s2_enc.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s2_enc.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s2_enc.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s2_enc.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s2_enc.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s2_lib.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s2_lib.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s2_lib.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -195,9 +198,9 @@
 s2_lib.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s2_lib.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s2_lib.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s2_lib.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s2_lib.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s2_lib.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s2_lib.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s2_lib.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s2_lib.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s2_meth.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s2_meth.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s2_meth.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -206,9 +209,9 @@
 s2_meth.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s2_meth.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s2_meth.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s2_meth.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s2_meth.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s2_meth.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s2_meth.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s2_meth.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s2_meth.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s2_pkt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s2_pkt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s2_pkt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -217,9 +220,9 @@
 s2_pkt.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s2_pkt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s2_pkt.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s2_pkt.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s2_pkt.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s2_pkt.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s2_pkt.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s2_pkt.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s2_pkt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s2_srvr.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s2_srvr.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s2_srvr.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -228,9 +231,9 @@
 s2_srvr.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s2_srvr.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s2_srvr.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s2_srvr.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s2_srvr.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s2_srvr.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s2_srvr.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s2_srvr.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s2_srvr.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s3_both.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s3_both.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s3_both.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -239,9 +242,9 @@
 s3_both.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s3_both.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s3_both.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s3_both.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s3_both.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s3_both.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s3_both.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s3_both.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s3_both.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s3_clnt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s3_clnt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s3_clnt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -250,9 +253,9 @@
 s3_clnt.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s3_clnt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s3_clnt.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s3_clnt.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s3_clnt.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s3_clnt.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s3_clnt.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s3_clnt.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s3_clnt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s3_enc.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s3_enc.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s3_enc.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -261,9 +264,9 @@
 s3_enc.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s3_enc.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s3_enc.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s3_enc.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s3_enc.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s3_enc.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s3_enc.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s3_enc.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s3_enc.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s3_lib.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s3_lib.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s3_lib.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -272,9 +275,9 @@
 s3_lib.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s3_lib.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s3_lib.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s3_lib.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s3_lib.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s3_lib.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s3_lib.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s3_lib.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s3_lib.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s3_meth.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s3_meth.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s3_meth.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -283,9 +286,9 @@
 s3_meth.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s3_meth.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s3_meth.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s3_meth.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s3_meth.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s3_meth.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s3_meth.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s3_meth.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s3_meth.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s3_pkt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s3_pkt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s3_pkt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -294,9 +297,9 @@
 s3_pkt.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s3_pkt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s3_pkt.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s3_pkt.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s3_pkt.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s3_pkt.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s3_pkt.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s3_pkt.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s3_pkt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 s3_srvr.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 s3_srvr.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 s3_srvr.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -305,9 +308,9 @@
 s3_srvr.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 s3_srvr.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 s3_srvr.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-s3_srvr.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-s3_srvr.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-s3_srvr.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+s3_srvr.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+s3_srvr.o: ../include/sha.h ../include/stack.h ../include/x509.h
+s3_srvr.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 ssl_algs.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_algs.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_algs.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -316,9 +319,9 @@
 ssl_algs.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 ssl_algs.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 ssl_algs.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-ssl_algs.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-ssl_algs.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-ssl_algs.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+ssl_algs.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+ssl_algs.o: ../include/sha.h ../include/stack.h ../include/x509.h
+ssl_algs.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 ssl_asn1.o: ../include/asn1.h ../include/asn1_mac.h ../include/bio.h
 ssl_asn1.o: ../include/blowfish.h ../include/bn.h ../include/buffer.h
 ssl_asn1.o: ../include/cast.h ../include/comp.h ../include/crypto.h
@@ -328,8 +331,9 @@
 ssl_asn1.o: ../include/mdc2.h ../include/objects.h ../include/opensslv.h
 ssl_asn1.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
 ssl_asn1.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-ssl_asn1.o: ../include/sha.h ../include/stack.h ../include/x509.h
-ssl_asn1.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+ssl_asn1.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+ssl_asn1.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
+ssl_asn1.o: ssl_locl.h tls1.h
 ssl_cert.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_cert.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_cert.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -339,9 +343,9 @@
 ssl_cert.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 ssl_cert.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h
 ssl_cert.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-ssl_cert.o: ../include/rsa.h ../include/sha.h ../include/stack.h
-ssl_cert.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
-ssl_cert.o: ssl_locl.h tls1.h
+ssl_cert.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+ssl_cert.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
+ssl_cert.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 ssl_ciph.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_ciph.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_ciph.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -350,9 +354,9 @@
 ssl_ciph.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 ssl_ciph.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 ssl_ciph.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-ssl_ciph.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-ssl_ciph.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-ssl_ciph.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+ssl_ciph.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+ssl_ciph.o: ../include/sha.h ../include/stack.h ../include/x509.h
+ssl_ciph.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 ssl_err.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_err.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_err.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -361,8 +365,9 @@
 ssl_err.o: ../include/mdc2.h ../include/objects.h ../include/opensslv.h
 ssl_err.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h
 ssl_err.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-ssl_err.o: ../include/sha.h ../include/stack.h ../include/x509.h
-ssl_err.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h tls1.h
+ssl_err.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+ssl_err.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
+ssl_err.o: tls1.h
 ssl_err2.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_err2.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_err2.o: ../include/crypto.h ../include/des.h ../include/dh.h
@@ -371,9 +376,9 @@
 ssl_err2.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 ssl_err2.o: ../include/opensslv.h ../include/pkcs7.h ../include/rc2.h
 ssl_err2.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-ssl_err2.o: ../include/rsa.h ../include/sha.h ../include/stack.h
-ssl_err2.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
-ssl_err2.o: tls1.h
+ssl_err2.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+ssl_err2.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
+ssl_err2.o: ssl2.h ssl23.h ssl3.h tls1.h
 ssl_lib.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_lib.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_lib.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -382,9 +387,9 @@
 ssl_lib.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 ssl_lib.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 ssl_lib.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-ssl_lib.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-ssl_lib.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-ssl_lib.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+ssl_lib.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+ssl_lib.o: ../include/sha.h ../include/stack.h ../include/x509.h
+ssl_lib.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 ssl_rsa.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_rsa.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_rsa.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -394,9 +399,9 @@
 ssl_rsa.o: ../include/objects.h ../include/opensslv.h ../include/pem.h
 ssl_rsa.o: ../include/pem2.h ../include/pkcs7.h ../include/rc2.h
 ssl_rsa.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-ssl_rsa.o: ../include/rsa.h ../include/sha.h ../include/stack.h
-ssl_rsa.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
-ssl_rsa.o: ssl_locl.h tls1.h
+ssl_rsa.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+ssl_rsa.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
+ssl_rsa.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 ssl_sess.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_sess.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_sess.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -406,8 +411,9 @@
 ssl_sess.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 ssl_sess.o: ../include/rand.h ../include/rc2.h ../include/rc4.h
 ssl_sess.o: ../include/rc5.h ../include/ripemd.h ../include/rsa.h
-ssl_sess.o: ../include/sha.h ../include/stack.h ../include/x509.h
-ssl_sess.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+ssl_sess.o: ../include/safestack.h ../include/sha.h ../include/stack.h
+ssl_sess.o: ../include/x509.h ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h
+ssl_sess.o: ssl_locl.h tls1.h
 ssl_stat.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_stat.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_stat.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -416,9 +422,9 @@
 ssl_stat.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 ssl_stat.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 ssl_stat.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-ssl_stat.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-ssl_stat.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-ssl_stat.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+ssl_stat.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+ssl_stat.o: ../include/sha.h ../include/stack.h ../include/x509.h
+ssl_stat.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 ssl_txt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 ssl_txt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 ssl_txt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -427,9 +433,9 @@
 ssl_txt.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 ssl_txt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 ssl_txt.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-ssl_txt.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-ssl_txt.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-ssl_txt.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+ssl_txt.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+ssl_txt.o: ../include/sha.h ../include/stack.h ../include/x509.h
+ssl_txt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 t1_clnt.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 t1_clnt.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 t1_clnt.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -438,9 +444,9 @@
 t1_clnt.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 t1_clnt.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 t1_clnt.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-t1_clnt.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-t1_clnt.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-t1_clnt.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+t1_clnt.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+t1_clnt.o: ../include/sha.h ../include/stack.h ../include/x509.h
+t1_clnt.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 t1_enc.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 t1_enc.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 t1_enc.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -449,9 +455,9 @@
 t1_enc.o: ../include/lhash.h ../include/md2.h ../include/md5.h
 t1_enc.o: ../include/mdc2.h ../include/objects.h ../include/opensslv.h
 t1_enc.o: ../include/pkcs7.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-t1_enc.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-t1_enc.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-t1_enc.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+t1_enc.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+t1_enc.o: ../include/sha.h ../include/stack.h ../include/x509.h
+t1_enc.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 t1_lib.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 t1_lib.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 t1_lib.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -460,9 +466,9 @@
 t1_lib.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 t1_lib.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 t1_lib.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-t1_lib.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-t1_lib.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-t1_lib.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+t1_lib.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+t1_lib.o: ../include/sha.h ../include/stack.h ../include/x509.h
+t1_lib.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 t1_meth.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 t1_meth.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 t1_meth.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -471,9 +477,9 @@
 t1_meth.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 t1_meth.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 t1_meth.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-t1_meth.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-t1_meth.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-t1_meth.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+t1_meth.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+t1_meth.o: ../include/sha.h ../include/stack.h ../include/x509.h
+t1_meth.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
 t1_srvr.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
 t1_srvr.o: ../include/bn.h ../include/buffer.h ../include/cast.h
 t1_srvr.o: ../include/comp.h ../include/crypto.h ../include/des.h
@@ -482,6 +488,6 @@
 t1_srvr.o: ../include/md2.h ../include/md5.h ../include/mdc2.h
 t1_srvr.o: ../include/objects.h ../include/opensslv.h ../include/pkcs7.h
 t1_srvr.o: ../include/rand.h ../include/rc2.h ../include/rc4.h ../include/rc5.h
-t1_srvr.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-t1_srvr.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h ssl.h
-t1_srvr.o: ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
+t1_srvr.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+t1_srvr.o: ../include/sha.h ../include/stack.h ../include/x509.h
+t1_srvr.o: ../include/x509_vfy.h ssl.h ssl2.h ssl23.h ssl3.h ssl_locl.h tls1.h
diff --git a/ssl/s23_srvr.c b/ssl/s23_srvr.c
index bf5e112..fa13216 100644
--- a/ssl/s23_srvr.c
+++ b/ssl/s23_srvr.c
@@ -256,7 +256,7 @@
 
 				if (s->options & SSL_OP_NON_EXPORT_FIRST)
 					{
-					STACK *sk;
+					STACK_OF(SSL_CIPHER) *sk;
 					SSL_CIPHER *c;
 					int ne2,ne3;
 
@@ -287,9 +287,9 @@
 					if (sk != NULL)
 						{
 						ne2=ne3=0;
-						for (j=0; j<sk_num(sk); j++)
+						for (j=0; j<sk_SSL_CIPHER_num(sk); j++)
 							{
-							c=(SSL_CIPHER *)sk_value(sk,j);
+							c=sk_SSL_CIPHER_value(sk,j);
 							if (!SSL_C_IS_EXPORT(c))
 								{
 								if ((c->id>>24L) == 2L)
diff --git a/ssl/s2_clnt.c b/ssl/s2_clnt.c
index d5457b0..46e14d8 100644
--- a/ssl/s2_clnt.c
+++ b/ssl/s2_clnt.c
@@ -302,7 +302,7 @@
 	unsigned char *buf;
 	unsigned char *p;
 	int i,j;
-	STACK *sk=NULL,*cl;
+	STACK_OF(SSL_CIPHER) *sk=NULL,*cl;
 
 	buf=(unsigned char *)s->init_buf->data;
 	p=buf;
@@ -411,7 +411,7 @@
 
 		/* load the ciphers */
 		sk=ssl_bytes_to_cipher_list(s,p,s->s2->tmp.csl,
-			&s->session->ciphers);
+					    &s->session->ciphers);
 		p+=s->s2->tmp.csl;
 		if (sk == NULL)
 			{
@@ -420,7 +420,7 @@
 			return(-1);
 			}
 
-		sk_set_cmp_func(sk,ssl_cipher_ptr_id_cmp);
+		sk_SSL_CIPHER_set_cmp_func(sk,ssl_cipher_ptr_id_cmp);
 
 		/* get the array of ciphers we will accept */
 		cl=ssl_get_ciphers_by_id(s);
@@ -430,19 +430,20 @@
 		 * will check against the list we origionally sent and
 		 * for performance reasons we should not bother to match
 		 * the two lists up just to check. */
-		for (i=0; i<sk_num(cl); i++)
+		for (i=0; i<sk_SSL_CIPHER_num(cl); i++)
 			{
-			if (sk_find(sk,sk_value(cl,i)) >= 0)
+			if (sk_SSL_CIPHER_find(sk,
+					       sk_SSL_CIPHER_value(cl,i)) >= 0)
 				break;
 			}
 
-		if (i >= sk_num(cl))
+		if (i >= sk_SSL_CIPHER_num(cl))
 			{
 			ssl2_return_error(s,SSL2_PE_NO_CIPHER);
 			SSLerr(SSL_F_GET_SERVER_HELLO,SSL_R_NO_CIPHER_MATCH);
 			return(-1);
 			}
-		s->session->cipher=(SSL_CIPHER *)sk_value(cl,i);
+		s->session->cipher=sk_SSL_CIPHER_value(cl,i);
 		}
 
 	if ((s->session != NULL) && (s->session->peer != NULL))
@@ -894,7 +895,7 @@
 int len;
 unsigned char *data;
 	{
-	STACK *sk=NULL;
+	STACK_OF(X509) *sk=NULL;
 	EVP_PKEY *pkey=NULL;
 	CERT *c=NULL;
 	int i;
@@ -908,8 +909,7 @@
 		goto err;
 		}
 
-	if (((sk=sk_new_null()) == NULL) ||
-		(!sk_push(sk,(char *)x509)))
+	if ((sk=sk_X509_new_null()) == NULL || !sk_X509_push(sk,x509))
 		{
 		SSLerr(SSL_F_SSL2_SET_CERTIFICATE,ERR_R_MALLOC_FAILURE);
 		goto err;
@@ -957,7 +957,7 @@
 		goto err;
 	ret=1;
 err:
-	sk_free(sk);
+	sk_X509_free(sk);
 	X509_free(x509);
 	EVP_PKEY_free(pkey);
 	return(ret);
diff --git a/ssl/s2_srvr.c b/ssl/s2_srvr.c
index 73c19af..930a47d 100644
--- a/ssl/s2_srvr.c
+++ b/ssl/s2_srvr.c
@@ -465,8 +465,8 @@
 	{
 	int i,n;
 	unsigned char *p;
-	STACK *cs; /* a stack of SSL_CIPHERS */
-	STACK *cl; /* the ones we want to use */
+	STACK_OF(SSL_CIPHER) *cs; /* a stack of SSL_CIPHERS */
+	STACK_OF(SSL_CIPHER) *cl; /* the ones we want to use */
 	int z;
 
 	/* This is a bit of a hack to check for the correct packet
@@ -574,11 +574,11 @@
 
 		cl=ssl_get_ciphers_by_id(s);
 
-		for (z=0; z<sk_num(cs); z++)
+		for (z=0; z<sk_SSL_CIPHER_num(cs); z++)
 			{
-			if (sk_find(cl,sk_value(cs,z)) < 0)
+			if (sk_SSL_CIPHER_find(cl,sk_SSL_CIPHER_value(cs,z)) < 0)
 				{
-				sk_delete(cs,z);
+				sk_SSL_CIPHER_delete(cs,z);
 				z--;
 				}
 			}
@@ -608,7 +608,7 @@
 	{
 	unsigned char *p,*d;
 	int n,hit;
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 
 	p=(unsigned char *)s->init_buf->data;
 	if (s->state == SSL2_ST_SEND_SERVER_HELLO_A)
@@ -787,7 +787,7 @@
 	unsigned char *ccd;
 	int i,j,ctype,ret= -1;
 	X509 *x509=NULL;
-	STACK *sk=NULL;
+	STACK_OF(X509) *sk=NULL;
 
 	ccd=s->s2->tmp.ccl;
 	if (s->state == SSL2_ST_SEND_REQUEST_CERTIFICATE_A)
@@ -876,7 +876,7 @@
 		goto msg_end;
 		}
 
-	if (((sk=sk_new_null()) == NULL) || (!sk_push(sk,(char *)x509)))
+	if (((sk=sk_X509_new_null()) == NULL) || (!sk_X509_push(sk,x509)))
 		{
 		SSLerr(SSL_F_REQUEST_CERTIFICATE,ERR_R_MALLOC_FAILURE);
 		goto msg_end;
@@ -933,7 +933,7 @@
 		ssl2_return_error(s,SSL2_PE_BAD_CERTIFICATE);
 		}
 end:
-	sk_free(sk);
+	sk_X509_free(sk);
 	X509_free(x509);
 	return(ret);
 	}
diff --git a/ssl/s3_both.c b/ssl/s3_both.c
index 0dad891..c3d660f 100644
--- a/ssl/s3_both.c
+++ b/ssl/s3_both.c
@@ -245,9 +245,9 @@
 
 	/* Thawte special :-) */
 	if (s->ctx->extra_certs != NULL)
-	for (i=0; i<sk_num(s->ctx->extra_certs); i++)
+	for (i=0; i<sk_X509_num(s->ctx->extra_certs); i++)
 		{
-		x=(X509 *)sk_value(s->ctx->extra_certs,i);
+		x=sk_X509_value(s->ctx->extra_certs,i);
 		n=i2d_X509(x,NULL);
 		if (!BUF_MEM_grow(buf,(int)(n+l+3)))
 			{
diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c
index 5cc0ff4..24d4f14 100644
--- a/ssl/s3_clnt.c
+++ b/ssl/s3_clnt.c
@@ -531,11 +531,11 @@
 		if (s->ctx->comp_methods == NULL)
 			j=0;
 		else
-			j=sk_num(s->ctx->comp_methods);
+			j=sk_SSL_COMP_num(s->ctx->comp_methods);
 		*(p++)=1+j;
 		for (i=0; i<j; i++)
 			{
-			comp=(SSL_COMP *)sk_value(s->ctx->comp_methods,i);
+			comp=sk_SSL_COMP_value(s->ctx->comp_methods,i);
 			*(p++)=comp->id;
 			}
 		*(p++)=0; /* Add the NULL method */
@@ -560,7 +560,7 @@
 static int ssl3_get_server_hello(s)
 SSL *s;
 	{
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 	SSL_CIPHER *c;
 	unsigned char *p,*d;
 	int i,al,ok;
@@ -645,7 +645,7 @@
 	p+=ssl_put_cipher_by_char(s,NULL,NULL);
 
 	sk=ssl_get_ciphers_by_id(s);
-	i=sk_find(sk,(char *)c);
+	i=sk_SSL_CIPHER_find(sk,c);
 	if (i < 0)
 		{
 		/* we did not say we would use this cipher */
@@ -707,7 +707,7 @@
 	unsigned long n,nc,llen,l;
 	X509 *x=NULL;
 	unsigned char *p,*d,*q;
-	STACK *sk=NULL;
+	STACK_OF(X509) *sk=NULL;
 	CERT *c;
 	EVP_PKEY *pkey=NULL;
 
@@ -738,7 +738,7 @@
 		}
 	d=p=(unsigned char *)s->init_buf->data;
 
-	if ((sk=sk_new_null()) == NULL)
+	if ((sk=sk_X509_new_null()) == NULL)
 		{
 		SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,ERR_R_MALLOC_FAILURE);
 		goto err;
@@ -775,7 +775,7 @@
 			SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_CERT_LENGTH_MISMATCH);
 			goto f_err;
 			}
-		if (!sk_push(sk,(char *)x))
+		if (!sk_X509_push(sk,x))
 			{
 			SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,ERR_R_MALLOC_FAILURE);
 			goto err;
@@ -800,7 +800,7 @@
 	s->session->cert=c;
 
 	c->cert_chain=sk;
-	x=(X509 *)sk_value(sk,0);
+	x=sk_X509_value(sk,0);
 	sk=NULL;
 
 	pkey=X509_get_pubkey(x);
@@ -845,7 +845,7 @@
 err:
 	EVP_PKEY_free(pkey);
 	X509_free(x);
-	sk_pop_free(sk,X509_free);
+	sk_X509_pop_free(sk,X509_free);
 	return(ret);
 	}
 
@@ -1151,7 +1151,7 @@
 	unsigned int llen,ctype_num,i;
 	X509_NAME *xn=NULL;
 	unsigned char *p,*d,*q;
-	STACK *ca_sk=NULL;
+	STACK_OF(X509_NAME) *ca_sk=NULL;
 
 	n=ssl3_get_message(s,
 		SSL3_ST_CR_CERT_REQ_A,
@@ -1195,7 +1195,7 @@
 
 	d=p=(unsigned char *)s->init_buf->data;
 
-	if ((ca_sk=sk_new(ca_dn_cmp)) == NULL)
+	if ((ca_sk=sk_X509_NAME_new(ca_dn_cmp)) == NULL)
 		{
 		SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,ERR_R_MALLOC_FAILURE);
 		goto err;
@@ -1260,7 +1260,7 @@
 			SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_CA_DN_LENGTH_MISMATCH);
 			goto err;
 			}
-		if (!sk_push(ca_sk,(char *)xn))
+		if (!sk_X509_NAME_push(ca_sk,xn))
 			{
 			SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,ERR_R_MALLOC_FAILURE);
 			goto err;
@@ -1280,13 +1280,13 @@
 	s->s3->tmp.cert_req=1;
 	s->s3->tmp.ctype_num=ctype_num;
 	if (s->s3->tmp.ca_names != NULL)
-		sk_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
+		sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
 	s->s3->tmp.ca_names=ca_sk;
 	ca_sk=NULL;
 
 	ret=1;
 err:
-	if (ca_sk != NULL) sk_pop_free(ca_sk,X509_NAME_free);
+	if (ca_sk != NULL) sk_X509_NAME_pop_free(ca_sk,X509_NAME_free);
 	return(ret);
 	}
 
diff --git a/ssl/s3_lib.c b/ssl/s3_lib.c
index 0fba6ce..d7bb6cd 100644
--- a/ssl/s3_lib.c
+++ b/ssl/s3_lib.c
@@ -502,7 +502,7 @@
 		DH_free(s->s3->tmp.dh);
 #endif
 	if (s->s3->tmp.ca_names != NULL)
-		sk_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
+		sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
 	memset(s->s3,0,sizeof(SSL3_CTX));
 	Free(s->s3);
 	s->s3=NULL;
@@ -515,7 +515,7 @@
 
 	ssl3_cleanup_key_block(s);
 	if (s->s3->tmp.ca_names != NULL)
-		sk_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
+		sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
 
 	if (s->s3->rrec.comp != NULL)
 		{
@@ -750,10 +750,10 @@
 	case SSL_CTRL_EXTRA_CHAIN_CERT:
 		if (ctx->extra_certs == NULL)
 			{
-			if ((ctx->extra_certs=sk_new_null()) == NULL)
+			if ((ctx->extra_certs=sk_X509_new_null()) == NULL)
 				return(0);
 			}
-		sk_push(ctx->extra_certs,(char *)parg);
+		sk_X509_push(ctx->extra_certs,(X509 *)parg);
 		break;
 
 	default:
@@ -832,7 +832,8 @@
 
 SSL_CIPHER *ssl3_choose_cipher(s,have,pref)
 SSL *s;
-STACK *have,*pref;
+STACK_OF(SSL_CIPHER) *have;
+STACK_OF(SSL_CIPHER) *pref;
 	{
 	SSL_CIPHER *c,*ret=NULL;
 	int i,j,ok;
@@ -845,7 +846,7 @@
 	else
 		cert=s->ctx->default_cert;
 
-	sk_set_cmp_func(pref,ssl_cipher_ptr_id_cmp);
+	sk_SSL_CIPHER_set_cmp_func(pref,ssl_cipher_ptr_id_cmp);
 
 #ifdef CIPHER_DEBUG
 	printf("Have:\n");
@@ -856,9 +857,9 @@
 	    }
 #endif
 
-	for (i=0; i<sk_num(have); i++)
+	for (i=0; i<sk_SSL_CIPHER_num(have); i++)
 		{
-		c=(SSL_CIPHER *)sk_value(have,i);
+		c=sk_SSL_CIPHER_value(have,i);
 
 		ssl_set_cert_masks(cert,s->ctx->default_cert,c);
 		mask=cert->mask;
@@ -884,10 +885,10 @@
 
 		if (!ok) continue;
 	
-		j=sk_find(pref,(char *)c);
+		j=sk_SSL_CIPHER_find(pref,c);
 		if (j >= 0)
 			{
-			ret=(SSL_CIPHER *)sk_value(pref,j);
+			ret=sk_SSL_CIPHER_value(pref,j);
 			break;
 			}
 		}
diff --git a/ssl/s3_srvr.c b/ssl/s3_srvr.c
index 21b93c1..3969657 100644
--- a/ssl/s3_srvr.c
+++ b/ssl/s3_srvr.c
@@ -555,7 +555,7 @@
 	unsigned char *p,*d,*q;
 	SSL_CIPHER *c;
 	SSL_COMP *comp=NULL;
-	STACK *ciphers=NULL;
+	STACK_OF(SSL_CIPHER) *ciphers=NULL;
 
 	/* We do this so that we will respond with our native type.
 	 * If we are TLSv1 and we get SSLv3, we will respond with TLSv1,
@@ -643,9 +643,9 @@
 #ifdef CIPHER_DEBUG
 		printf("client sent %d ciphers\n",sk_num(ciphers));
 #endif
-		for (i=0; i<sk_num(ciphers); i++)
+		for (i=0; i<sk_SSL_CIPHER_num(ciphers); i++)
 			{
-			c=(SSL_CIPHER *)sk_value(ciphers,i);
+			c=sk_SSL_CIPHER_value(ciphers,i);
 #ifdef CIPHER_DEBUG
 			printf("client [%2d of %2d]:%s\n",
 				i,sk_num(ciphers),SSL_CIPHER_get_name(c));
@@ -658,11 +658,11 @@
 			}
 		if (j == 0)
 			{
-			if ((s->options & SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG) && (sk_num(ciphers) == 1))
+			if ((s->options & SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG) && (sk_SSL_CIPHER_num(ciphers) == 1))
 				{
 				/* Very bad for multi-threading.... */
-				s->session->cipher=
-					(SSL_CIPHER *)sk_value(ciphers,0);
+				s->session->cipher=sk_SSL_CIPHER_value(ciphers,
+								       0);
 				}
 			else
 				{
@@ -700,10 +700,10 @@
 		{ /* See if we have a match */
 		int m,nn,o,v,done=0;
 
-		nn=sk_num(s->ctx->comp_methods);
+		nn=sk_SSL_COMP_num(s->ctx->comp_methods);
 		for (m=0; m<nn; m++)
 			{
-			comp=(SSL_COMP *)sk_value(s->ctx->comp_methods,m);
+			comp=sk_SSL_COMP_value(s->ctx->comp_methods,m);
 			v=comp->id;
 			for (o=0; o<i; o++)
 				{
@@ -741,7 +741,7 @@
 		{
 		s->session->compress_meth=(comp == NULL)?0:comp->id;
 		if (s->session->ciphers != NULL)
-			sk_free(s->session->ciphers);
+			sk_SSL_CIPHER_free(s->session->ciphers);
 		s->session->ciphers=ciphers;
 		if (ciphers == NULL)
 			{
@@ -751,7 +751,7 @@
 			}
 		ciphers=NULL;
 		c=ssl3_choose_cipher(s,s->session->ciphers,
-			ssl_get_ciphers_by_id(s));
+				     ssl_get_ciphers_by_id(s));
 
 		if (c == NULL)
 			{
@@ -765,16 +765,16 @@
 		{
 		/* Session-id reuse */
 #ifdef REUSE_CIPHER_BUG
-		STACK *sk;
+		STACK_OF(SSL_CIPHER) *sk;
 		SSL_CIPHER *nc=NULL;
 		SSL_CIPHER *ec=NULL;
 
 		if (s->options & SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG)
 			{
 			sk=s->session->ciphers;
-			for (i=0; i<sk_num(sk); i++)
+			for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
 				{
-				c=(SSL_CIPHER *)sk_value(sk,i);
+				c=sk_SSL_CIPHER_value(sk,i);
 				if (c->algorithms & SSL_eNULL)
 					nc=c;
 				if (SSL_C_IS_EXPORT(c))
@@ -810,7 +810,7 @@
 		ssl3_send_alert(s,SSL3_AL_FATAL,al);
 		}
 err:
-	if (ciphers != NULL) sk_free(ciphers);
+	if (ciphers != NULL) sk_SSL_CIPHER_free(ciphers);
 	return(ret);
 	}
 
@@ -1136,7 +1136,7 @@
 	{
 	unsigned char *p,*d;
 	int i,j,nl,off,n;
-	STACK *sk=NULL;
+	STACK_OF(X509_NAME) *sk=NULL;
 	X509_NAME *name;
 	BUF_MEM *buf;
 
@@ -1161,9 +1161,9 @@
 		nl=0;
 		if (sk != NULL)
 			{
-			for (i=0; i<sk_num(sk); i++)
+			for (i=0; i<sk_X509_NAME_num(sk); i++)
 				{
-				name=(X509_NAME *)sk_value(sk,i);
+				name=sk_X509_NAME_value(sk,i);
 				j=i2d_X509_NAME(name,NULL);
 				if (!BUF_MEM_grow(buf,4+n+j+2))
 					{
@@ -1562,7 +1562,7 @@
 	X509 *x=NULL;
 	unsigned long l,nc,llen,n;
 	unsigned char *p,*d,*q;
-	STACK *sk=NULL;
+	STACK_OF(X509) *sk=NULL;
 
 	n=ssl3_get_message(s,
 		SSL3_ST_SR_CERT_A,
@@ -1605,7 +1605,7 @@
 		}
 	d=p=(unsigned char *)s->init_buf->data;
 
-	if ((sk=sk_new_null()) == NULL)
+	if ((sk=sk_X509_new_null()) == NULL)
 		{
 		SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,ERR_R_MALLOC_FAILURE);
 		goto err;
@@ -1641,7 +1641,7 @@
 			SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_CERT_LENGTH_MISMATCH);
 			goto f_err;
 			}
-		if (!sk_push(sk,(char *)x))
+		if (!sk_X509_push(sk,x))
 			{
 			SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,ERR_R_MALLOC_FAILURE);
 			goto err;
@@ -1650,7 +1650,7 @@
 		nc+=l+3;
 		}
 
-	if (sk_num(sk) <= 0)
+	if (sk_X509_num(sk) <= 0)
 		{
 		/* TLS does not mind 0 certs returned */
 		if (s->version == SSL3_VERSION)
@@ -1682,7 +1682,7 @@
 	/* This should not be needed */
 	if (s->session->peer != NULL)
 		X509_free(s->session->peer);
-	s->session->peer=(X509 *)sk_shift(sk);
+	s->session->peer=sk_X509_shift(sk);
 	s->session->cert->cert_chain=sk;
 	sk=NULL;
 
@@ -1694,7 +1694,7 @@
 		}
 err:
 	if (x != NULL) X509_free(x);
-	if (sk != NULL) sk_pop_free(sk,X509_free);
+	if (sk != NULL) sk_X509_pop_free(sk,X509_free);
 	return(ret);
 	}
 
diff --git a/ssl/ssl.h b/ssl/ssl.h
index 06ca4aa..4bb1a2e 100644
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -63,6 +63,8 @@
 extern "C" {
 #endif
 
+#include "safestack.h"
+
 /* SSLeay version number for ASN.1 encoding of the session information */
 /* Version 0 - initial version
  * Version 1 - added the optional peer certificate
@@ -167,6 +169,8 @@
 	unsigned long mask;		/* used for matching */
 	} SSL_CIPHER;
 
+DECLARE_STACK_OF(SSL_CIPHER)
+
 typedef struct ssl_st SSL;
 typedef struct ssl_ctx_st SSL_CTX;
 
@@ -254,7 +258,7 @@
 					 * needs to be used to load
 					 * the 'cipher' structure */
 
-	STACK /* SSL_CIPHER */ *ciphers; /* shared ciphers? */
+	STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */
 
 	CRYPTO_EX_DATA ex_data; /* application specific data */
 
@@ -314,14 +318,16 @@
 #endif
 } SSL_COMP;
 
+DECLARE_STACK_OF(SSL_COMP)
+
 struct ssl_ctx_st
 	{
 	SSL_METHOD *method;
 	unsigned long options;
 
-	STACK /* SSL_CIPHER */ *cipher_list;
+	STACK_OF(SSL_CIPHER) *cipher_list;
 	/* same as above but sorted for lookup */
-	STACK /* SSL_CIPHER */ *cipher_list_by_id;
+	STACK_OF(SSL_CIPHER) *cipher_list_by_id;
 
 	struct x509_store_st /* X509_STORE */ *cert_store;
 	struct lhash_st /* LHASH */ *sessions;	/* a set of SSL_SESSION's */
@@ -404,7 +410,7 @@
 /**/	int (*client_cert_cb)(/* SSL *ssl, X509 **x509, EVP_PKEY **pkey */);
 
 	/* what we put in client requests */
-	STACK *client_CA;
+	STACK_OF(X509_NAME) *client_CA;
 
 /**/	int quiet_shutdown;
 
@@ -414,8 +420,8 @@
 	EVP_MD *md5;	/* For SSLv3/TLSv1 'ssl3-md5' */
 	EVP_MD *sha1;   /* For SSLv3/TLSv1 'ssl3->sha1' */
 
-	STACK *extra_certs;
-        STACK *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */
+	STACK_OF(X509) *extra_certs;
+        STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */
 	};
 
 #define SSL_SESS_CACHE_OFF			0x0000
@@ -533,8 +539,8 @@
 	int hit;		/* reusing a previous session */
 
 	/* crypto */
-	STACK /* SSL_CIPHER */ *cipher_list;
-	STACK /* SSL_CIPHER */ *cipher_list_by_id;
+	STACK_OF(SSL_CIPHER) *cipher_list;
+	STACK_OF(SSL_CIPHER) *cipher_list_by_id;
 
 	/* These are the ones being used, the ones is SSL_SESSION are
 	 * the ones to be 'copied' into these ones */
@@ -588,7 +594,7 @@
 	CRYPTO_EX_DATA ex_data;
 
 	/* for server side, keep the list of CA_dn we can use */
-	STACK /* X509_NAME */ *client_CA;
+	STACK_OF(X509_NAME) *client_CA;
 
 	int references;
 	unsigned long options;
@@ -868,7 +874,7 @@
 int	SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, char *file, int type);
 int	SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, char *file, int type);
 int	SSL_CTX_use_certificate_file(SSL_CTX *ctx, char *file, int type);
-STACK * SSL_load_client_CA_file(char *file);
+STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
 int	SSL_add_file_cert_subjects_to_stack(STACK *stackCAs,
 					    const char *file);
 int	SSL_add_dir_cert_subjects_to_stack(STACK *stackCAs,
@@ -907,7 +913,7 @@
 X509 *	SSL_get_peer_certificate(SSL *s);
 #endif
 
-STACK *	SSL_get_peer_cert_chain(SSL *s);
+STACK_OF(X509) *SSL_get_peer_cert_chain(SSL *s);
 
 int SSL_CTX_get_verify_mode(SSL_CTX *ctx);
 int (*SSL_CTX_get_verify_callback(SSL_CTX *ctx))(int,X509_STORE_CTX *);
@@ -961,7 +967,7 @@
 SSL_METHOD *TLSv1_server_method(void);	/* TLSv1.0 */
 SSL_METHOD *TLSv1_client_method(void);	/* TLSv1.0 */
 
-STACK *SSL_get_ciphers(SSL *s);
+STACK_OF(SSL_CIPHER) *SSL_get_ciphers(SSL *s);
 
 int SSL_do_handshake(SSL *s);
 int SSL_renegotiate(SSL *s);
@@ -974,10 +980,10 @@
 char *SSL_alert_desc_string_long(int value);
 char *SSL_alert_desc_string(int value);
 
-void SSL_set_client_CA_list(SSL *s, STACK *list);
-void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK *list);
-STACK *SSL_get_client_CA_list(SSL *s);
-STACK *SSL_CTX_get_client_CA_list(SSL_CTX *s);
+void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *list);
+void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *list);
+STACK_OF(X509_NAME) *SSL_get_client_CA_list(SSL *s);
+STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(SSL_CTX *s);
 int SSL_add_client_CA(SSL *ssl,X509 *x);
 int SSL_CTX_add_client_CA(SSL_CTX *ctx,X509 *x);
 
diff --git a/ssl/ssl3.h b/ssl/ssl3.h
index cf8238c..d334c90 100644
--- a/ssl/ssl3.h
+++ b/ssl/ssl3.h
@@ -331,7 +331,7 @@
 		int cert_req;
 		int ctype_num;
 		char ctype[SSL3_CT_NUMBER];
-		STACK *ca_names;
+		STACK_OF(X509_NAME) *ca_names;
 
 		int use_rsa_tmp;
 
diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c
index f50de34..52812e9 100644
--- a/ssl/ssl_cert.c
+++ b/ssl/ssl_cert.c
@@ -143,7 +143,7 @@
 #endif
 		}
 	if (c->cert_chain != NULL)
-		sk_pop_free(c->cert_chain,X509_free);
+		sk_X509_pop_free(c->cert_chain,X509_free);
 	Free(c);
 	}
 
@@ -174,16 +174,16 @@
 	return(1);
 	}
 
-int ssl_verify_cert_chain(SSL *s,STACK *sk)
+int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk)
 	{
 	X509 *x;
 	int i;
 	X509_STORE_CTX ctx;
 
-	if ((sk == NULL) || (sk_num(sk) == 0))
+	if ((sk == NULL) || (sk_X509_num(sk) == 0))
 		return(0);
 
-	x=(X509 *)sk_value(sk,0);
+	x=sk_X509_value(sk,0);
 	X509_STORE_CTX_init(&ctx,s->ctx->cert_store,x,sk);
 	X509_STORE_CTX_set_ex_data(&ctx,SSL_get_ex_data_X509_STORE_CTX_idx(),
 		(char *)s);
@@ -207,10 +207,11 @@
 	return(i);
 	}
 
-static void set_client_CA_list(STACK **ca_list,STACK *list)
+static void set_client_CA_list(STACK_OF(X509_NAME) **ca_list,
+			       STACK_OF(X509_NAME) *list)
 	{
 	if (*ca_list != NULL)
-		sk_pop_free(*ca_list,X509_NAME_free);
+		sk_X509_NAME_pop_free(*ca_list,X509_NAME_free);
 
 	*ca_list=list;
 	}
@@ -234,22 +235,22 @@
 	return(ret);
 	}
 
-void SSL_set_client_CA_list(SSL *s,STACK *list)
+void SSL_set_client_CA_list(SSL *s,STACK_OF(X509_NAME) *list)
 	{
 	set_client_CA_list(&(s->client_CA),list);
 	}
 
-void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK *list)
+void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK_OF(X509_NAME) *list)
 	{
 	set_client_CA_list(&(ctx->client_CA),list);
 	}
 
-STACK *SSL_CTX_get_client_CA_list(SSL_CTX *ctx)
+STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(SSL_CTX *ctx)
 	{
 	return(ctx->client_CA);
 	}
 
-STACK *SSL_get_client_CA_list(SSL *s)
+STACK_OF(X509_NAME) *SSL_get_client_CA_list(SSL *s)
 	{
 	if (s->type == SSL_ST_CONNECT)
 		{ /* we are in the client */
@@ -268,18 +269,18 @@
 		}
 	}
 
-static int add_client_CA(STACK **sk,X509 *x)
+static int add_client_CA(STACK_OF(X509_NAME) **sk,X509 *x)
 	{
 	X509_NAME *name;
 
 	if (x == NULL) return(0);
-	if ((*sk == NULL) && ((*sk=sk_new_null()) == NULL))
+	if ((*sk == NULL) && ((*sk=sk_X509_NAME_new_null()) == NULL))
 		return(0);
 		
 	if ((name=X509_NAME_dup(X509_get_subject_name(x))) == NULL)
 		return(0);
 
-	if (!sk_push(*sk,(char *)name))
+	if (!sk_X509_NAME_push(*sk,name))
 		{
 		X509_NAME_free(name);
 		return(0);
@@ -311,15 +312,15 @@
  * \param file the file containing one or more certs.
  * \return a ::STACK containing the certs.
  */
-STACK *SSL_load_client_CA_file(char *file)
+STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
 	{
 	BIO *in;
 	X509 *x=NULL;
 	X509_NAME *xn=NULL;
-	STACK *ret,*sk;
+	STACK_OF(X509_NAME) *ret,*sk;
 
-	ret=sk_new(NULL);
-	sk=sk_new(name_cmp);
+	ret=sk_X509_NAME_new(NULL);
+	sk=sk_X509_NAME_new(name_cmp);
 
 	in=BIO_new(BIO_s_file_internal());
 
@@ -340,22 +341,22 @@
 		/* check for duplicates */
 		xn=X509_NAME_dup(xn);
 		if (xn == NULL) goto err;
-		if (sk_find(sk,(char *)xn) >= 0)
+		if (sk_X509_NAME_find(sk,xn) >= 0)
 			X509_NAME_free(xn);
 		else
 			{
-			sk_push(sk,(char *)xn);
-			sk_push(ret,(char *)xn);
+			sk_X509_NAME_push(sk,xn);
+			sk_X509_NAME_push(ret,xn);
 			}
 		}
 
 	if (0)
 		{
 err:
-		if (ret != NULL) sk_pop_free(ret,X509_NAME_free);
+		if (ret != NULL) sk_X509_NAME_pop_free(ret,X509_NAME_free);
 		ret=NULL;
 		}
-	if (sk != NULL) sk_free(sk);
+	if (sk != NULL) sk_X509_NAME_free(sk);
 	if (in != NULL) BIO_free(in);
 	if (x != NULL) X509_free(x);
 	return(ret);
diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
index e3f61ea..55c3fd0 100644
--- a/ssl/ssl_ciph.c
+++ b/ssl/ssl_ciph.c
@@ -74,7 +74,7 @@
 	NULL,NULL,NULL,NULL,NULL,NULL,
 	};
 
-static STACK /* SSL_COMP */ *ssl_comp_methods=NULL;
+static STACK_OF(SSL_COMP) *ssl_comp_methods=NULL;
 
 #define SSL_MD_MD5_IDX	0
 #define SSL_MD_SHA1_IDX	1
@@ -211,9 +211,9 @@
 			{
 
 			ctmp.id=s->compress_meth;
-			i=sk_find(ssl_comp_methods,(char *)&ctmp);
+			i=sk_SSL_COMP_find(ssl_comp_methods,&ctmp);
 			if (i >= 0)
-				*comp=(SSL_COMP *)sk_value(ssl_comp_methods,i);
+				*comp=sk_SSL_COMP_value(ssl_comp_methods,i);
 			else
 				*comp=NULL;
 			}
@@ -298,14 +298,15 @@
 	*tail=curr;
 	}
 
-STACK *ssl_create_cipher_list(ssl_method,cipher_list,cipher_list_by_id,str)
+STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(ssl_method,cipher_list,
+					     cipher_list_by_id,str)
 SSL_METHOD *ssl_method;
-STACK **cipher_list,**cipher_list_by_id;
+STACK_OF(SSL_CIPHER) **cipher_list,**cipher_list_by_id;
 char *str;
 	{
 	SSL_CIPHER *c;
 	char *l;
-	STACK *ret=NULL,*ok=NULL;
+	STACK_OF(SSL_CIPHER) *ret=NULL,*ok=NULL;
 #define CL_BUF	40
 	char buf[CL_BUF];
 	char *tmp_str=NULL;
@@ -340,7 +341,7 @@
 
 	num=ssl_method->num_ciphers();
 
-	if ((ret=(STACK *)sk_new(NULL)) == NULL) goto err;
+	if ((ret=sk_SSL_CIPHER_new(NULL)) == NULL) goto err;
 	if ((ca_list=(STACK *)sk_new(cmp_by_name)) == NULL) goto err;
 
 	mask =SSL_kFZA;
@@ -573,7 +574,7 @@
 		{
 		if (curr->active)
 			{
-			sk_push(ret,(char *)curr->cipher);
+			sk_SSL_CIPHER_push(ret,curr->cipher);
 #ifdef CIPHER_DEBUG
 			printf("<%s>\n",curr->cipher->name);
 #endif
@@ -583,15 +584,15 @@
 	if (cipher_list != NULL)
 		{
 		if (*cipher_list != NULL)
-			sk_free(*cipher_list);
+			sk_SSL_CIPHER_free(*cipher_list);
 		*cipher_list=ret;
 		}
 
 	if (cipher_list_by_id != NULL)
 		{
 		if (*cipher_list_by_id != NULL)
-			sk_free(*cipher_list_by_id);
-		*cipher_list_by_id=sk_dup(ret);
+			sk_SSL_CIPHER_free(*cipher_list_by_id);
+		*cipher_list_by_id=sk_SSL_CIPHER_dup(ret);
 		}
 
 	if (	(cipher_list_by_id == NULL) ||
@@ -599,14 +600,14 @@
 		(cipher_list == NULL) ||
 		(*cipher_list == NULL))
 		goto err;
-	sk_set_cmp_func(*cipher_list_by_id,ssl_cipher_ptr_id_cmp);
+	sk_SSL_CIPHER_set_cmp_func(*cipher_list_by_id,ssl_cipher_ptr_id_cmp);
 
 	ok=ret;
 	ret=NULL;
 err:
 	if (tmp_str) Free(tmp_str);
 	if (ops != NULL) Free(ops);
-	if (ret != NULL) sk_free(ret);
+	if (ret != NULL) sk_SSL_CIPHER_free(ret);
 	if (ca_list != NULL) sk_free(ca_list);
 	if (list != NULL) Free(list);
 	return(ok);
@@ -794,17 +795,17 @@
 	}
 
 SSL_COMP *ssl3_comp_find(sk,n)
-STACK *sk;
+STACK_OF(SSL_COMP) *sk;
 int n;
 	{
 	SSL_COMP *ctmp;
 	int i,nn;
 
 	if ((n == 0) || (sk == NULL)) return(NULL);
-	nn=sk_num(sk);
+	nn=sk_SSL_COMP_num(sk);
 	for (i=0; i<nn; i++)
 		{
-		ctmp=(SSL_COMP *)sk_value(sk,i);
+		ctmp=sk_SSL_COMP_value(sk,i);
 		if (ctmp->id == n)
 			return(ctmp);
 		}
@@ -817,7 +818,7 @@
 	return((*a)->id-(*b)->id);
 	}
 
-STACK *SSL_COMP_get_compression_methods()
+STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods()
 	{
 	return(ssl_comp_methods);
 	}
@@ -827,16 +828,16 @@
 COMP_METHOD *cm;
 	{
 	SSL_COMP *comp;
-	STACK *sk;
+	STACK_OF(SSL_COMP) *sk;
 
 	comp=(SSL_COMP *)Malloc(sizeof(SSL_COMP));
 	comp->id=id;
 	comp->method=cm;
 	if (ssl_comp_methods == NULL)
-		sk=ssl_comp_methods=sk_new(sk_comp_cmp);
+		sk=ssl_comp_methods=sk_SSL_COMP_new(sk_comp_cmp);
 	else
 		sk=ssl_comp_methods;
-	if ((sk == NULL) || !sk_push(sk,(char *)comp))
+	if ((sk == NULL) || !sk_SSL_COMP_push(sk,comp))
 		{
 		SSLerr(SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD,ERR_R_MALLOC_FAILURE);
 		return(0);
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
index 3b6c364..566d112 100644
--- a/ssl/ssl_lib.c
+++ b/ssl/ssl_lib.c
@@ -145,13 +145,13 @@
 /** Used to change an SSL_CTXs default SSL method type */
 int SSL_CTX_set_ssl_version(SSL_CTX *ctx,SSL_METHOD *meth)
 	{
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 
 	ctx->method=meth;
 
 	sk=ssl_create_cipher_list(ctx->method,&(ctx->cipher_list),
 		&(ctx->cipher_list_by_id),SSL_DEFAULT_CIPHER_LIST);
-	if ((sk == NULL) || (sk_num(sk) <= 0))
+	if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0))
 		{
 		SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION,SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS);
 		return(0);
@@ -270,8 +270,8 @@
 	if (s->init_buf != NULL) BUF_MEM_free(s->init_buf);
 
 	/* add extra stuff */
-	if (s->cipher_list != NULL) sk_free(s->cipher_list);
-	if (s->cipher_list_by_id != NULL) sk_free(s->cipher_list_by_id);
+	if (s->cipher_list != NULL) sk_SSL_CIPHER_free(s->cipher_list);
+	if (s->cipher_list_by_id != NULL) sk_SSL_CIPHER_free(s->cipher_list_by_id);
 
 	/* Make the next call work :-) */
 	if (s->session != NULL)
@@ -288,7 +288,7 @@
 	if (s->ctx) SSL_CTX_free(s->ctx);
 
 	if (s->client_CA != NULL)
-		sk_pop_free(s->client_CA,X509_NAME_free);
+		sk_X509_NAME_pop_free(s->client_CA,X509_NAME_free);
 
 	if (s->method != NULL) s->method->ssl_free(s);
 
@@ -460,9 +460,9 @@
 	return(r);
 	}
 
-STACK *SSL_get_peer_cert_chain(SSL *s)
+STACK_OF(X509) *SSL_get_peer_cert_chain(SSL *s)
 	{
-	STACK *r;
+	STACK_OF(X509) *r;
 	
 	if ((s == NULL) || (s->session == NULL) || (s->session->cert == NULL))
 		r=NULL;
@@ -705,7 +705,7 @@
 
 /** return a STACK of the ciphers available for the SSL and in order of
  * preference */
-STACK *SSL_get_ciphers(SSL *s)
+STACK_OF(SSL_CIPHER) *SSL_get_ciphers(SSL *s)
 	{
 	if ((s != NULL) && (s->cipher_list != NULL))
 		{
@@ -721,7 +721,7 @@
 
 /** return a STACK of the ciphers available for the SSL and in order of
  * algorithm id */
-STACK *ssl_get_ciphers_by_id(SSL *s)
+STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s)
 	{
 	if ((s != NULL) && (s->cipher_list_by_id != NULL))
 		{
@@ -739,13 +739,13 @@
 char *SSL_get_cipher_list(SSL *s,int n)
 	{
 	SSL_CIPHER *c;
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 
 	if (s == NULL) return(NULL);
 	sk=SSL_get_ciphers(s);
-	if ((sk == NULL) || (sk_num(sk) <= n))
+	if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= n))
 		return(NULL);
-	c=(SSL_CIPHER *)sk_value(sk,n);
+	c=sk_SSL_CIPHER_value(sk,n);
 	if (c == NULL) return(NULL);
 	return(c->name);
 	}
@@ -753,7 +753,7 @@
 /** specify the ciphers to be used by defaut by the SSL_CTX */
 int SSL_CTX_set_cipher_list(SSL_CTX *ctx,char *str)
 	{
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 	
 	sk=ssl_create_cipher_list(ctx->method,&ctx->cipher_list,
 		&ctx->cipher_list_by_id,str);
@@ -764,7 +764,7 @@
 /** specify the ciphers to be used by the SSL */
 int SSL_set_cipher_list(SSL *s,char *str)
 	{
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 	
 	sk=ssl_create_cipher_list(s->ctx->method,&s->cipher_list,
 		&s->cipher_list_by_id,str);
@@ -776,7 +776,7 @@
 char *SSL_get_shared_ciphers(SSL *s,char *buf,int len)
 	{
 	char *p,*cp;
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 	SSL_CIPHER *c;
 	int i;
 
@@ -786,11 +786,11 @@
 
 	p=buf;
 	sk=s->session->ciphers;
-	for (i=0; i<sk_num(sk); i++)
+	for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
 		{
 		/* Decrement for either the ':' or a '\0' */
 		len--;
-		c=(SSL_CIPHER *)sk_value(sk,i);
+		c=sk_SSL_CIPHER_value(sk,i);
 		for (cp=c->name; *cp; )
 			{
 			if (len-- == 0)
@@ -807,7 +807,7 @@
 	return(buf);
 	}
 
-int ssl_cipher_list_to_bytes(SSL *s,STACK *sk,unsigned char *p)
+int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p)
 	{
 	int i,j=0;
 	SSL_CIPHER *c;
@@ -816,19 +816,20 @@
 	if (sk == NULL) return(0);
 	q=p;
 
-	for (i=0; i<sk_num(sk); i++)
+	for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
 		{
-		c=(SSL_CIPHER *)sk_value(sk,i);
+		c=sk_SSL_CIPHER_value(sk,i);
 		j=ssl_put_cipher_by_char(s,c,p);
 		p+=j;
 		}
 	return(p-q);
 	}
 
-STACK *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,STACK **skp)
+STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
+					       STACK_OF(SSL_CIPHER) **skp)
 	{
 	SSL_CIPHER *c;
-	STACK *sk;
+	STACK_OF(SSL_CIPHER) *sk;
 	int i,n;
 
 	n=ssl_put_cipher_by_char(s,NULL,NULL);
@@ -838,11 +839,11 @@
 		return(NULL);
 		}
 	if ((skp == NULL) || (*skp == NULL))
-		sk=sk_new(NULL); /* change perhaps later */
+		sk=sk_SSL_CIPHER_new(NULL); /* change perhaps later */
 	else
 		{
 		sk= *skp;
-		sk_zero(sk);
+		sk_SSL_CIPHER_zero(sk);
 		}
 
 	for (i=0; i<num; i+=n)
@@ -851,7 +852,7 @@
 		p+=n;
 		if (c != NULL)
 			{
-			if (!sk_push(sk,(char *)c))
+			if (!sk_SSL_CIPHER_push(sk,c))
 				{
 				SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST,ERR_R_MALLOC_FAILURE);
 				goto err;
@@ -864,7 +865,7 @@
 	return(sk);
 err:
 	if ((skp == NULL) || (*skp == NULL))
-		sk_free(sk);
+		sk_SSL_CIPHER_free(sk);
 	return(NULL);
 	}
 
@@ -958,7 +959,8 @@
 	ssl_create_cipher_list(ret->method,
 		&ret->cipher_list,&ret->cipher_list_by_id,
 		SSL_DEFAULT_CIPHER_LIST);
-	if ((ret->cipher_list == NULL) || (sk_num(ret->cipher_list) <= 0))
+	if (ret->cipher_list == NULL
+	    || sk_SSL_CIPHER_num(ret->cipher_list) <= 0)
 		{
 		SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_LIBRARY_HAS_NO_CIPHERS);
 		goto err2;
@@ -980,7 +982,7 @@
 		goto err2;
 		}
 
-	if ((ret->client_CA=sk_new_null()) == NULL)
+	if ((ret->client_CA=sk_X509_NAME_new_null()) == NULL)
 		goto err;
 
 	CRYPTO_new_ex_data(ssl_ctx_meth,(char *)ret,&ret->ex_data);
@@ -996,6 +998,9 @@
 	return(NULL);
 	}
 
+static void SSL_COMP_free(SSL_COMP *comp)
+    { Free(comp); }
+
 void SSL_CTX_free(SSL_CTX *a)
 	{
 	int i;
@@ -1024,17 +1029,17 @@
 	if (a->cert_store != NULL)
 		X509_STORE_free(a->cert_store);
 	if (a->cipher_list != NULL)
-		sk_free(a->cipher_list);
+		sk_SSL_CIPHER_free(a->cipher_list);
 	if (a->cipher_list_by_id != NULL)
-		sk_free(a->cipher_list_by_id);
+		sk_SSL_CIPHER_free(a->cipher_list_by_id);
 	if (a->default_cert != NULL)
 		ssl_cert_free(a->default_cert);
 	if (a->client_CA != NULL)
-		sk_pop_free(a->client_CA,X509_NAME_free);
+		sk_X509_NAME_pop_free(a->client_CA,X509_NAME_free);
 	if (a->extra_certs != NULL)
-		sk_pop_free(a->extra_certs,X509_free);
+		sk_X509_pop_free(a->extra_certs,X509_free);
 	if (a->comp_methods != NULL)
-		sk_pop_free(a->comp_methods,FreeFunc);
+		sk_SSL_COMP_pop_free(a->comp_methods,SSL_COMP_free);
 	Free((char *)a);
 	}
 
@@ -1427,7 +1432,7 @@
 
 SSL *SSL_dup(SSL *s)
         {
-	STACK *sk;
+	STACK_OF(X509_NAME) *sk;
 	X509_NAME *xn;
         SSL *ret;
 	int i;
@@ -1471,23 +1476,23 @@
 	/* dup the cipher_list and cipher_list_by_id stacks */
 	if (s->cipher_list != NULL)
 		{
-		if ((ret->cipher_list=sk_dup(s->cipher_list)) == NULL)
+		if ((ret->cipher_list=sk_SSL_CIPHER_dup(s->cipher_list)) == NULL)
 			goto err;
 		}
 	if (s->cipher_list_by_id != NULL)
-		if ((ret->cipher_list_by_id=sk_dup(s->cipher_list_by_id))
+		if ((ret->cipher_list_by_id=sk_SSL_CIPHER_dup(s->cipher_list_by_id))
 			== NULL)
 			goto err;
 
 	/* Dup the client_CA list */
 	if (s->client_CA != NULL)
 		{
-		if ((sk=sk_dup(s->client_CA)) == NULL) goto err;
+		if ((sk=sk_X509_NAME_dup(s->client_CA)) == NULL) goto err;
 		ret->client_CA=sk;
-		for (i=0; i<sk_num(sk); i++)
+		for (i=0; i<sk_X509_NAME_num(sk); i++)
 			{
-			xn=(X509_NAME *)sk_value(sk,i);
-			if ((sk_value(sk,i)=(char *)X509_NAME_dup(xn)) == NULL)
+			xn=sk_X509_NAME_value(sk,i);
+			if (sk_X509_NAME_set(sk,i,X509_NAME_dup(xn)) == NULL)
 				{
 				X509_NAME_free(xn);
 				goto err;
@@ -1796,3 +1801,6 @@
 #if defined(_WINDLL) && defined(WIN16)
 #include "../crypto/bio/bss_file.c"
 #endif
+
+IMPLEMENT_STACK_OF(SSL_CIPHER)
+IMPLEMENT_STACK_OF(SSL_COMP)
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index b573457..a29994b 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -283,7 +283,7 @@
 	DH *(*dh_tmp_cb)(SSL *ssl,int export,int keysize);
 	CERT_PKEY pkeys[SSL_PKEY_NUM];
 
-	STACK *cert_chain;
+	STACK_OF(X509) *cert_chain;
 
 	int references;
 	} CERT;
@@ -359,20 +359,23 @@
 int ssl_get_prev_session(SSL *s, unsigned char *session,int len);
 int ssl_cipher_id_cmp(SSL_CIPHER *a,SSL_CIPHER *b);
 int ssl_cipher_ptr_id_cmp(SSL_CIPHER **ap,SSL_CIPHER **bp);
-STACK *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,STACK **skp);
-int ssl_cipher_list_to_bytes(SSL *s,STACK *sk,unsigned char *p);
-STACK *ssl_create_cipher_list(SSL_METHOD *meth,STACK **pref,
-	STACK **sorted,char *str);
+STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
+					       STACK_OF(SSL_CIPHER) **skp);
+int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p);
+STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(SSL_METHOD *meth,
+					     STACK_OF(SSL_CIPHER) **pref,
+					     STACK_OF(SSL_CIPHER) **sorted,
+					     char *str);
 void ssl_update_cache(SSL *s, int mode);
 int ssl_cipher_get_evp(SSL_SESSION *s, EVP_CIPHER **enc, EVP_MD **md,
 	SSL_COMP **comp);
-int ssl_verify_cert_chain(SSL *s,STACK *sk);
+int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk);
 int ssl_undefined_function(SSL *s);
 X509 *ssl_get_server_send_cert(SSL *);
 EVP_PKEY *ssl_get_sign_pkey(SSL *,SSL_CIPHER *);
 int ssl_cert_type(X509 *x,EVP_PKEY *pkey);
 void ssl_set_cert_masks(CERT *c,CERT *default_cert,SSL_CIPHER *cipher);
-STACK *ssl_get_ciphers_by_id(SSL *s);
+STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s);
 int ssl_verify_alarm_type(long type);
 
 int ssl2_enc_init(SSL *s, int client);
@@ -432,7 +435,8 @@
 int ssl3_enc(SSL *s, int send_data);
 int ssl3_mac(SSL *ssl, unsigned char *md, int send_data);
 unsigned long ssl3_output_cert_chain(SSL *s, X509 *x);
-SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK *have,STACK *pref);
+SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK_OF(SSL_CIPHER) *have,
+			       STACK_OF(SSL_CIPHER) *pref);
 int	ssl3_setup_buffers(SSL *s);
 int	ssl3_new(SSL *s);
 void	ssl3_free(SSL *s);
@@ -474,8 +478,8 @@
 int ssl3_alert_code(int code);
 int ssl_ok(SSL *s);
 
-SSL_COMP *ssl3_comp_find(STACK *sk, int n);
-STACK *SSL_COMP_get_compression_methods(void);
+SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n);
+STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
 
 
 #else
diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c
index 341dc63..66bd281 100644
--- a/ssl/ssl_sess.c
+++ b/ssl/ssl_sess.c
@@ -399,7 +399,7 @@
 	memset(ss->session_id,0,SSL_MAX_SSL_SESSION_ID_LENGTH);
 	if (ss->cert != NULL) ssl_cert_free(ss->cert);
 	if (ss->peer != NULL) X509_free(ss->peer);
-	if (ss->ciphers != NULL) sk_free(ss->ciphers);
+	if (ss->ciphers != NULL) sk_SSL_CIPHER_free(ss->ciphers);
 	memset(ss,0,sizeof(*ss));
 	Free(ss);
 	}
diff --git a/test/Makefile.ssl b/test/Makefile.ssl
index d359264..2f3cee5 100644
--- a/test/Makefile.ssl
+++ b/test/Makefile.ssl
@@ -305,8 +305,9 @@
 bntest.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 bntest.o: ../include/opensslv.h ../include/pkcs7.h ../include/rand.h
 bntest.o: ../include/rc2.h ../include/rc4.h ../include/rc5.h
-bntest.o: ../include/ripemd.h ../include/rsa.h ../include/sha.h
-bntest.o: ../include/stack.h ../include/x509.h ../include/x509_vfy.h
+bntest.o: ../include/ripemd.h ../include/rsa.h ../include/safestack.h
+bntest.o: ../include/sha.h ../include/stack.h ../include/x509.h
+bntest.o: ../include/x509_vfy.h
 casttest.o: ../include/cast.h
 destest.o: ../include/des.h
 dhtest.o: ../include/bio.h ../include/bn.h ../include/crypto.h ../include/dh.h
@@ -335,7 +336,8 @@
 rc5test.o: ../include/rc5.h
 rmdtest.o: ../include/ripemd.h
 rsa_oaep_test.o: ../include/bn.h ../include/crypto.h ../include/e_os.h
-rsa_oaep_test.o: ../include/opensslv.h ../include/rsa.h ../include/stack.h
+rsa_oaep_test.o: ../include/err.h ../include/opensslv.h ../include/rsa.h
+rsa_oaep_test.o: ../include/stack.h
 sha1test.o: ../include/sha.h
 shatest.o: ../include/sha.h
 ssltest.o: ../include/asn1.h ../include/bio.h ../include/blowfish.h
@@ -346,6 +348,7 @@
 ssltest.o: ../include/md5.h ../include/mdc2.h ../include/objects.h
 ssltest.o: ../include/opensslv.h ../include/pkcs7.h ../include/rc2.h
 ssltest.o: ../include/rc4.h ../include/rc5.h ../include/ripemd.h
-ssltest.o: ../include/rsa.h ../include/sha.h ../include/ssl.h ../include/ssl2.h
-ssltest.o: ../include/ssl23.h ../include/ssl3.h ../include/stack.h
-ssltest.o: ../include/tls1.h ../include/x509.h ../include/x509_vfy.h
+ssltest.o: ../include/rsa.h ../include/safestack.h ../include/sha.h
+ssltest.o: ../include/ssl.h ../include/ssl2.h ../include/ssl23.h
+ssltest.o: ../include/ssl3.h ../include/stack.h ../include/tls1.h
+ssltest.o: ../include/x509.h ../include/x509_vfy.h